目录
DDL语言(数据定义语言:Data Definition Language)
一、mysql启动、停止、退出
1.MySQL的启动(注意:mysql不区分字母大小写)
net start mysql2.MySQL的停止
net stop mysql3.MySQL的退出
mysql -h主机名 -p端口号 -u用户名 -p密码
一般连接自己主机数据库时
mysql - u root -p
DDL语言(数据定义语言:Data Definition Language)
1.创建数据库
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码;示例:创建一个Test数据库
create database Test default character set utf8;2.查看所有数据库
show databases;3.删除数据库
drop database test;4.选择数据库
USE 数据库名;示例:
use test5.创建表
CREATE TABLE 表名(列名 类型,列名 类型 );实例:创建一个employees 表包含雇员ID ,雇员名字,雇员薪水。
create table employees(employee_id int,employee_name varchar(10),salary float(8,2));6.删除表
DROP TABLE 表名;drop table employees;7.修改表
ALTER TABLE 旧表名 RENAME 新表名;alter table employees rename emp;8.修改列名
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;alter table emp change column employee_name name varchar(20);9.修改列类型
ALTER TABLE 表名 MODIFY 列名 新类型;alter table emp modify name varchar(40);10.添加新列
ALTER TABLE 表名 ADD COLUMN 新列名 类型;alter table emp add column commission_pct float(4,2);11.删除指定列
ALTER TABLE 表名 DROP COLUMN 列名;alter table emp drop column commission_pct;MySQL中的约束 
12.添加/删除主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名)alter table emp add primary key(employee_id);主键自动增长
MySQL 中的自动增长类型要求:
一个表中只能有一个列为自动增长。自动增长的列的类型必须是整数类型。自动增长只能添加到具备主键约束与唯一性约束的列上。删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。
alter table 表名 modify 主键 类型
auto_increment;alter table emp modify employee_id int auto_increment;示例:去掉自动增长
alter table emp modify employee_id int;删除主键约束
alter table emp drop primary key;13.添加/删除外键约束
添加外键约束:
alter table 表名 add constraint 约束名 foreign key(列名) references 参照的表名/列名删除外键约束:
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;14.添加/删除唯一性约束
添加:
ALTER TABLE 表名 ADD CONSTRAINT 约束名
UNIQUE(列名);删除唯一性约束:
ALTER TABLE 表名 DROP KEY 约束名;15.添加/删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;ALTER TABLE 表名 MODIFY 列名 类型 NULL;16.查询表中的约束信息
SHOW KEYS FROM 表名;DML语句

1.选择插入
INSERT INTO 表名(列名 1 ,列名 2 ,列名
3.....) VALUES(值 1 ,值 2 ,值 3 );示例:
insert into departments(department_name,location_id) values("market", 1);2.完全插入
INSERT INTO 表名 VALUES(值 1 ,值 2 ,值3 );3.创建表时指定默认值
CREATE TABLE 表名(列名 类型 default 默认值,. );示例:
创建emp3 表,该表包含emp_id 主键且自动增长,包含name , 包含address 该列默认 值为”未知”。
create table emp3(emp_id int primary key auto_increment,
name varchar(10),address varchar(50) default 'Unknown');4.修改表添加新列并指定默认值
ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT
默认值;如果在插入数据时并未指定该列的值,那么MySQL 会将默认值添加到该列中。如果是 完全项插入需要使用default 来占位。
5.更新数据
UPDATE 表名 SET 列名=值,列名=值 WHERE 条件;更新语句中一定要给定更新条件,否则表中的所有数据都会被更新
示例:更新 emp3 表中的id 为1 的数据,添加address 为BeiJing
update emp3 set address = "BeiJing" where emp_id = 1;6.删除数据
DELETE FROM 表名 WHERE 条件;在DELETE语句中,如果没有给定删除条件则会删除表中的所有数据。
示例:删除 emp3 表中emp_id 为1 的雇员信息。
delete from emp3 where emp_id = 1;7.TRUNCATE清空表
TRUNCATE TABLE 表名;truncate 不写服务器log,delete 写服务器log,也就是truncate 效率比delete高的原因;truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从1 开始记录,而 不是接着原来的值。而delete 删除以后, 自增值仍然会继续累加。
DQL语句
1.(SELECT)查询数据

SELECT 语句从数据库中返回信息。使用一个SELECT 语句,可以做下面的事:
列选择:能够使用SELECT 语句的列选择功能选择表中的列,这些列是想
要用查询返回的。当查询时,能够返回列中的数据。
行选择:能够使用SELECT 语句的行选择功能选择表中的行,这些行是想
要用查询返回的。能够使用不同的标准限制看见的行。
连接:能够使用SELECT 语句的连接功能来集合数据,这些数据被存储在不
同的表中,在它们之间可以创建连接,查询出我们所关心的数据。

语句 | 含义 |
SELECT | 是一个或多个字段的列表 |
* | 选择所有的列 |
DISTINCT | 禁止重复 |
column | expression | 选择指定的字段或表达式 |
alias | 给所选择的列不同的标题 |
FROM table | 指定包含列的表 |
1.查询表中所有数据
select * from 表名;2.查询中的算术表达式
select 列名(+、-、*、/)数字 from 表名;2.mysql中的别名
1.使用列别名
SELECT 列名 AS 列别名 FROM 表名 WHERE 条件;2.使用表别名
SELECT 表别名.列名 FROM 表名 as 表别名 WHERE 条件;需要注意的是在mysql的条件判断中不等于可表示为:<>和!=两种。
3.比较条件:

1.between

2.in

示例:查询employees 表,找出薪水是5000,6000,8000 的雇员ID、名字与薪水。
select employee_id,last_name,salary from employees where salary in(5000,6000,8000);3.使用Like条件

示例:查询employees 中雇员名字第二个字母是e 的雇员名字。
select last_name from employees where last_name like '_e%';4.使用null条件

示例1:找出emloyees 表中那些没有佣金的雇员雇员ID、名字与佣金。
select employee_id,last_name,commission_pct from employees where commission_pct is null;示例二:找出employees 表中那些有佣金的雇员ID、名字与佣金
select employee_id,last_name,commission_pct from employees where commission_pct is not null;4.逻辑条件

示例一:查询employees 表中雇员薪水是8000 的并且名字中含有e 的雇员名字与薪水。
select last_name,salary from employees where salary = 8000 and last_name like '%e%';示例二:查询employees 表中雇员薪水是8000 的或者名字中含有e 的雇员名字与薪水。
select last_name,salary from employees where salary = 8000 or last_name like '%e%';示例三: 查询employees 表中雇员名字中不包含u 的雇员的名字。
select last_name from employees where last_name not like '%u%';5.order by排序

多列排序
