MySQL
DDL:数据定义语言[create表、库]
DML:数据操作语句[增加insert、修改updata、删除delete]
DQL:数据查询语句[select]
DCL:数据控制语句[管理数据库:比如用户权限grant、revoke]
显示数据库语句:SHOW DATABASE
显示数据库创建语句:SHOW CREATE DATABASE db_name
数据库删除语句:DROP DATABASE [IF EXISTS] db_name
备份数据库(在DOS执行)命令行
mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n>文件名.sql
恢复数据库:Source 文件名.sql
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 dataype
)character set 字符集 collate 校对规则 engine 存储引擎
指定unsinged则数据带符号
添加列
ALTER TABLE tablename
ADD (colum datatype [DEFAULT expr]
\[,colum datatype\]...)
修改列
ALTER TABLE tablename
MODIFY (colum datatype [DEFAULT expr]
\[,colum datatype\]...)
删除列
ALTER TABLE tablename
DROP (colum)
查看表的结构: desc 表名;-- 可以查看表的列
修改表名:Rename table 表名 to 新表名
修改表字符集:alter table 表名 character set 字符集
`ALTER TABLE emp
ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER resume
DESC emp
ALTER TABLE emp
MODIFY job VARCHAR(60) NOT NULL DEFAULT ''
ALTER TABLE emp
DROP sex
RENAME TABLE emp to employee
DESC employee
ALTER TABLE employee CHARACTER SET utf8
ALTER TABLE employee CHANGE name username VARCHAR(32) NOT NULL DEFAULT ''
DESC employee`
数据库CRUD语句
- insert语句
- update语句
- delete语句
- select语句
insert语句
INSERT INTO tablename [(colum[,colum...])]
VALUES (value [,value ...]);
`CREATE TABLE goods
( id INT,
goods_name VARCHAR(10),
price DOUBLE);
INSERT INTO goods (id,goods_name,price)
VALUES (1,'华为手机',20000)
INSERT INTO goods
VALUES (2,'apple',2000)
DESC employee
INSERT INTO employee
VALUES (4,'huawei','2000-9-10','2000-9-10 11:11:11','san',2000,'我爱国',110)
DESC employee
SELECT * FROM employee`
update语句
UPDATE tab_name
SET col_name =expr1[,col_name=expr2]
[WHERE where_definition]
UPDATE employee SET Salary =5000
UPDATE employee SET Salary=2000 WHERE username = '小妖怪'
UPDATE employee SET Salary = Salary+1000 WHERE username = 'huawei'
UPDATE employee SET image=120 WHERE username = '小妖怪'`
delete语句
delete from tab_name [WHERE where_defintion]
select语句
select [DISTINCT] * [{solum1,colum2...}] FROM tablename
DISTNCT去重
SELECT columname as 别名 from 表名
where 子句中经常使用的运算符
order by 子句排序查询语句 ASC升序 DESC降序
合计/统计函数 -- count
SELECT COUNT(*)/COUNT(列名) from tablename
count(*)返回满足条件的记录的行数
count(列)统计满足条件的某列有多少个,但是会排除为null
合计函数 -- sum
select sun(列名) from tablename where
合计函数 -- avg
select avg(列名) from tablename where
合计函数 -- max/min
select max(列名)/min(列名) from tablename where
使用gruop by 子句对列进行分组
select Colum1,colum2...from table
group by colum
使用having子句对分组后的结果进行过滤
select colum1,colum2...from table
group by Colum having 。。。
加密和系统函数
USER() 查询用户
DATABASE() 数据库名称
MD5(str) 为字符串算出一个MD5 32的字符串,(用户密码加锁)
PASSWORD(str)
[select * from mysql.user\G 从原文密码str计算并返回密码字符串,通常用于对mysql数据库的用户密码加密
mysql>create table users(id int ,name varchar(32) not null default'',pwd char(32) nut null default'')
SELECT USER() FROM DUAL
查看登录到mysql的有哪些用户,以及登录的IP
SELECT DATABASE() FROM DUAL
查询当前使用数据库名称
SELECT MD5('0000') FROM DUAL
MD5加密
流程控制函数
IF(expr1,expr2,expr3)--如果1为true 返回2 否则返回3
IFNULL(expr1,expr2)--如果expr1不为空NULL,则返回expr1,否则返回expr2
SELECT CASE WHERE expr1 THEN expr2 WHEN expr3 THEN expr4 ESLE expr5 END; 如果1为true则返回2 如果3为true 则返回4否则返回5
分页查询 :
select...limit start,rows
select结构
select Colum1,Colum2...from table
group by colum
having condition
order by colum
limit start,rows
多表查询
SELECT * FROM emp,dept
WHERE dept.deptno=emp.deptno
自链接 :是指在同一张表的链接查询(将同一张表看做两张表)
单行子查询:只返回一行数据的子查询
多行子查询:返回多行数据的子查询 用关键字in
合并查询
union all 不会去重
union 自动去重
primary key(主键) : 用于唯一的标示表行的数据,当定义主键的约束后,该列不能重复
复合主键:primary key(id,name)
unique 唯一 : 当定义了唯一约束后,该列数值是不能重复的
外键
primary key
foreign key() references --()
-- 创建主表
CREATE TABLE class (
id INT PRIMARY KEY ,
name VARCHAR(32) not null
)
-- 创建从表
CREATE TABLE stud(
id INT PRIMARY KEY ,
name VARCHAR(32) not null ,
class_id INT,
FOREIGN KEY (class_id) REFERENCES class(id)
)
check:用于强制行数据必须满足条件,假定在sal列上定义了check约束,并要求sal列值在10002000之间,如果不在10002000之间就会报错