about Mysql basic 1

本文为SQL语言的基本知识点记录

在对mysql安装完成后,在windows系统可以直接通过cmd 终端以mysql -uUsername -pPassword的方式进入mysql终端。系统Path变量如果没有mysql.exe的路径,则会显示上面命令不存在。解决办法为添加路径在path变量中,然后重开cmd终端。
sql语法有以下特点:

  • sql语法可以单行或者多行书写,以分号结尾
  • 关键字不区分大小写,建议为大写

    SQL的数据类型

  • int:整型
  • double:浮点型,用法double(5.2),最大值为999.99。即五位数,其中小数位为两位
  • decimal:泛型,使用时不会出现精度缺失问题
  • char:固定长度字符串类型,当列属性为char(50),若值不足50则会自动补齐至50
  • varchar:可变长度字符串类型,varchar(maxsize)其中maxsize表示最大长度
  • date:YYYY-MM-DD
  • datetime:YYYY-MM-DD hh:mm:ss

在MySQL的安装路径下有较为重要的文件:
1. bin\mysql.exe:这个是客户端程序,用来操作服务器,但是要开启服务器才能链接上
2. bin\mysqld.exe:这个程序是服务器端程序
3. bin\my.ini:服务器配置文件
4. data:这个目录下每一个目录代表一个数据库(database)
* 数据库目录下的frm的文件是table

SQL语言

SQL语言主要可以分为数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。

DDL

用来定义数据库对象:库、表、列…指对数据库或者表的结构进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*数据库*/
SHOW DATABASES /*查看所有数据库*/
USE databaseName /*选择要操作的数据库*/
CREATE DATABASE [IF NOT EXISTS] db1 [CHARSET=utf8] /*创建db1数据库,并指定编码为utf8,如果db1不存在
DROP DATABASE [IF EXISTS] db1 /*删除db1,如果存在*/
ALTER DATABASE db1 CHARACTER SET utf8 /*将bd1数据库的编码设置为utf8*/

/*表*/
SHOW TABLES /*查看当前数据库的所有表*/
DESC tableName /*查看表结构*/
DROP TABLE tableName /*删除表*/
/*修改表*/
ALTER TABLE tableName
>ADD(c1 type1,c2 type2 ... cn typen); /*添加列*/
ALTER TABLE tableName
>MODIFY cn newtype; /*修改cn列类型为newtype*/
ALTER TABLE tableName
>DROP cn; /*删除cn列*/
ALTER TABLE oldTable
>RENAME TO newTable; /*修改表名称*/
CREATE TABLE [IF NOT EXISTS] tableName(c1 type1,c2 type2 ... cn typen); /*创建表*/

DML

定义数据库记录,对表的记录进行更新(增,删,改)。

1
2
3
4
5
6
7
8
9
10
11
12
INTERT INTO tbName(cName1,cName2...cNamen) VALUES(value1,value2...valuen);/*向表中插入一条记录*/
UPDATE tbName SET c1=value1,c2=value2...cn=valuen [where boolean表达式或值]/*修改表中记录*/
/*boolean表达式运算符*/
= /*等于*/
!= <> /*都是不等于*/
> ,<,>=,<=
BETWEEN a AND b /*a到b之间*/
IN(...) /*在in里面的值*/
IS NULL /*值为null*/
NOT,AND,OR
DELETE FORM tbName [where boolean值或表达式]/*删除数据*/
TRUNCATE TABLE tbName;/*厉害的删除表*/

DCL

对访问者进行权限定义,对用户创建帐号、帐号授权以及取消操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.创建用户
CREATE USER userName@IP地址 IDENTIFIED BY 'password' /*创建用户并指定IP地址*/
CREATE USER userName@'%' IDENTIFIED BY 'password' /*创建用户,不限IP地址*/

2.用户授权
GRANT 权限1,...权限n ON databaseName.* TO userName@ip地址 /*将某数据库的权限给某用户*/
GRANT ALL ON databaseName.* TO userName@IP地址 /*将数据库的所有权限给用户*/

3.撤销授权
REVOKE 权限1,权限2...权限n ON dbName.* from userName@IP地址 /*撤销用户的指定数据库权限*/

4.查看权限
SHOW GRANTS FOR 用户名@IP地址 /*查看用户权限*/

5.删除用户
DROP USER 用户名@IP地址 /*删除用户*/

DQL

查询记录(select ),查询的语句不会修改数据库表的记录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
10.字段控制
11.查看列记录
SELECT * FROM tbName; /*查看所有列记录,'*'代表所有列*/
SELECT c1[,c2...cn] FROM tbName; /*查看指定列记录*/
SELECT DISTINCT *\c1[,c2...cn] FROM tbName; /*重复记录只显示一次*/
12.列运算
SELECT cn*1.5 FROM tbName; /*cn列的值乘1.5*/
SELECT cm-cn FROM tbName; /*查看(cm-cn)*/
13.函数
SELECT CONCAT('string:',cn) FROM tbName; /*在cn列的值前加入'string:'显示*/
SELECT IFNULL(cn,0) FROM tbName; /*将cn列中的null值转换为0显示*/
SELECT cn AS '第n列' FROM tbName; /*显示列名为'第n列',其中AS可以忽略*/
COUNT(*); /*记数,行不全为null*/
MAX(cn);MIN(cn);sum(cn);AVG(cn)

20.条件控制
21.条件查询
SELECT * FROM tbName WHERE boolean表达式;/*查询满足表达式的记录*/
22.模糊查询
SELECT * FROM tbName WHERE name LIKE '张_'; /*查询张姓的记录,一个'_'表示一个任意字*/
SELECT * FROM tbName WHERE name LIKE '%l%'; /*查询name列中有'l'字符的记录,%表示0~n个任意字符*/

30.排序
SELECT * FROM tbName ORDER BY cn ASC; /*按cn升序显示*/
SELECT * FROM tbName ORDER BY cn DESC; /*按cm降序显示*/
SELECT * FROM tbName ORDER BY cm ASC,cn DESC;/*按cm升序,若想同则按cn降序排列*/

40.分组
SELECT deptno,COUNT(*) FORM emp GROUP BY deptno; /*使用deptno分组,显示部门编号(deptno),每个部门的记录数(COUNT(*))*/
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*)>3; /*使用deptno分组,显示部门编号(deptno),每个部门的记录数(COUNT(*)),条件为记录数大于3*/

执行顺序为select --> from --> where --> group by --> having --> order by