cmd中操作数据库的命令
mysql -hlocalhost -用户名 -密码
show database;查询数据库中的小数据库
show 数据库名;查询某一个小数据库
show 表名;查询表的结构
exit 退出
数据类型
数值类型
int :整形
double:双精度,浮点型
float:单精度,浮点型
decimal:小数值
日期和时间类型
DATE:日期,YYYY-MM-DD
TIME:时间,hh:mm:ss
YEAR:年份,YYYY
DATETIME:混合时间日期,YYYY-MM-DD hh:mm:ss
TIMESTAMP:时间戳,YYYY-MM-DD hh:mm:ss
字符串类型
char :固定长度字符, char(5):每次输入一个字符,就按照五个字节去计算
varchar :可变长度字符, varchar(10):输入一个字符就按照一个字节去算,其余九个字节自动释放
text:文本数据
关键字
名称 | 关键字 | 含义 | 例句 |
---|---|---|---|
主键 | primary key | 唯一标识数据库中记录 | CREATE TABLE table1(id int NOT NULL, PRIMARY KEY(id)) 创建表的时候,将id设置为主键 |
外键 | foreign key | 通过数据与另一张表关联 | ALTER TABLE table2 ADD CONSTRAINT foreign_key_name FOREIGN KEY (key1) REFERENCES table1 (id); 在表2中添加外键约束,外键名为key1,关联的是表1中的id |
非空 | not NULL | 不可为空 | CREATE TABLE table1(id int NOT NULL, PRIMARY KEY(id)) 创建表的时候,将id设置为非空 |
为空 | NULL | 为空 | SELECT NAME FORM table1 where field1 is NULL; 查询table1中的name,并且field1中的值为空 |
唯一 | unique | 唯一标识数据库中的记录 | CREATE TABLE table1(id int NOT NULL, UNIQUE(id)) 创建表的时候,将id设置为唯一 |
去重 | distinct | 去掉重复的值 | SELECT DISTINCT MAX(salary) FROM table1; 查询table1中的最高工资,重复的不显示 |
逻辑 或 | or | 筛选条件,跟在where之后,条件1 or 条件2,筛选条件满足两个条件中的其中一个即可 | SELECT name FROM table1 WHERE city = ’上海‘ or city = '杭州'; 在table1中查询城市在上海或者杭州的人员的名称 |
逻辑 与 | and | 筛选条件,跟在where之后,条件1 and 条件2,筛选条件满足两个条件才可以 | SELECT name FROM table1 WHERE city = ’上海‘ and township = '浦东新区'; 在table1中查询城市在上海并且在浦东新区的人员的名称 |
逻辑 非 | not | 不满足not之后的元素被筛选出来 | SELECT name FROM table1 WHERE city NOT IN ('上海','北京','天津','杭州'); 在table1中查找城市不在上海、北京、天津、杭州的人员名称 |
模糊查询 | like | 模糊查找与关键字匹配的信息 | SELECT name FROM table1 where name LIKE '张%'; 查询table1中以张开头的的name记录 |
通配符 - 单个字符 | _ | _任意单个字符 | SELECT name FROM table1 where name LIKE '_ang'; 查询table1中第一个字符之后是ang的name记录 |
通配符 - 多个字符 | % | 任意多个字符 xxx% %xxx %xxx% | SELECT name FROM table1 where name LIKE '%zhang'; 查询table1中以zhang结尾的name记录 |
范围查询 | in | 多个值中进行匹配查询 | SELECT name FROM table1 WHERE city IN ('上海','北京','天津','杭州'); 在table1中查找城市在上海、北京、天津、杭州的人员名称 |
范围内查询 | between… and… | 在两个数值之间进行匹配查询,包含边界值 | SELECT name,salary FROM table1 WHERE salary between 10000 and 20000; table1中查找薪资在1w和2w之间的员工名称以及薪水 |
排序 | order by | order by 列名1 ,列名2 如果列名1相同,则按照列名2排序,默认按照升序排序 | SELECT name, salary FROM table1 ORDER BY salary; 查询table1中的姓名和薪水,按照薪水升序排列 |
降序 | desc | 降序排序,跟order by使用 | SELECT name, salary FROM table1 ORDER BY salary DESC; 查询table1中的姓名和薪水,按照薪水降序排列 |
升序 | asc | 升序排序,跟order by使用 | SELECT name, salary FROM table1 ORDER BY salary ASC; 查询table1中的姓名和薪水,按照薪水升序排列 |
聚合函数 - 求和 | count(*), count(列名) | 计算有值项的次数,不为空就累加1 | SELECT COUNT(name) FROM table1; 计算table1中的总人数 |
聚合函数 - 总和 | sum(*) | 某一个字段的值的总和 | SELECT sum(salary) FROM table1; 查找table1中的薪水总和 |
聚合函数 - 最大值 | max(*) | 某一个字段的值的最大值 | SELECT max(salary) FROM table1; 查找table1中的薪水最大值 |
聚合函数 - 最小值 | min(*) | 某一个字段的值的最小值 | SELECT min(salary) FROM table1; 查找table1中的薪水最小值 |
聚合函数 - 平均值 | avg(*) | 某一个字段的值的平均值 | SELECT avg(salary) FROM table1; 查找table1中的薪水平均值 |
分组 | group by | 按照某一个字段分组 | SELECT max(salary) FROM table1 GROUP BY department; 查找table1中的薪水最大值,按照部门分组 |