注释:
每行sql语句后加; 和java一样.
分类:
数据定义语言DDL:
C create
R 查询
U update
D delete
/* 方式1 直接指定数据库名进行创建 默认数据库字符集为:latin1 */ CREATE DATABASE db1; /* 方式2 指定数据库名称,指定数据库的字符集 一般都指定为 utf8,与Java中的编码保持一致 */ CREATE DATABASE db1_1 CHARACTER SET utf8;
-- 切换数据库 从db1 切换到 db1_1 USE db1_1; -- 查看当前正在使用的数据库 SELECT DATABASE(); -- 查看Mysql中有哪些数据库 SHOW DATABASES; -- 查看一个数据库的定义信息 SHOW CREATE DATABASE db1_1;
mysql 默认数据库:
information_schema #信息数据库,保存其他数据库的信息
mysql #用户和权限相关信息
performance_schema #性能相关数据
sys 记录了dba所需要的一些信息
DDL 修改和删除:
-- 将数据库db1 的字符集 修改为 utf8 ALTER DATABASE db1 CHARACTER SET utf8; -- 查看当前数据库的基本信息,发现编码已更改 SHOW CREATE DATABASE db1; -- 删除某个数据库 DROP DATABASE db1_1;
常见数据类型:
varchar 和char都代表字符串:
varchar 是可变长度的类型,存储字符串,只使用所需空间.
char 固定长度.
创建表:
create table test1( tid int, tdata date );
--复制表结构:
create table test2 like test1;
--查看表结构:
desc test1;
--查看表:
-- 查看当前数据库中的所有表名 SHOW TABLES; -- 显示当前数据表的结构 DESC category; -- 查看创建表的SQL语句 SHOW CREATE TABLE category;
--删除表:
-- 直接删除 test1 表 DROP TABLE test1; -- 先判断 再删除test2表 DROP TABLE IF EXISTS test2;
--修改表:
--修改表名:
RENAME TABLE category TO category1;
--修改表的字符集:
alter table 表名 character set 字符集 alter table category character set gbk;
--添加一个字段:
alter table 表名 add 字段名 字段类型; alter table category add desc varchar(20);
--修改表中列的类型或长度:
alter table 表名 modify 字段名 字段类型 alter table category modify desc char(50);
--修改列的名称:
alter table 表名 change 旧列名 新列名 类型(长度) alter table category change desc cdesc varchar(30);
--删除列:
alter table 表名 drop 列名; alter table category drop desc;
--DML插入:
insert into 表名(字段1,字段2,...) values(值1,值2,...); insert into student(sid,sname,age,sex,address) values(1,‘悟空‘,18,‘男‘,‘花果山‘); insert into student values(2,‘悟空‘,5,‘男‘,‘地球‘); insert into student(sid,sname) values(3,‘蜘蛛精‘);
--DML 修改:
update 表名 set 列名=值 update 表名 set 列名=值 [where 条件表达式]
--DML 删除:
delete from 表名; delete from 表名 [where 条件] delete from student where sid=6; truncate table 表名; #删除所有数据 ,删除整张表,再创建一个一模一样的表.
--DQL简单查询:
select 列名 from 表名 select * from emp; select eid,name from emp; #指定列查询 select eid as ‘编号‘ ,name as ‘姓名‘ from emp; //别名查询,as可以省略 select distinct dept_name from emp; # 去重 select name,salary+1000 as salary from emp;
--DQL 条件查询
# 查询员工姓名为黄蓉的员工信息 SELECT * FROM emp WHERE ename = ‘黄蓉‘; # 查询薪水价格为5000的员工信息 SELECT * FROM emp WHERE salary = 5000; # 查询薪水价格不是5000的所有员工信息 SELECT * FROM emp WHERE salary != 5000; SELECT * FROM emp WHERE salary <> 5000; # 查询薪水价格大于6000元的所有员工信息 SELECT * FROM emp WHERE salary > 6000; # 查询薪水价格在5000到10000之间所有员工信息 SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000; # 查询薪水价格是3600或7200或者20000的所有员工信息 -- 方式1: or SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000; -- 方式2: in() 匹配括号中指定的参数 SELECT * FROM emp WHERE salary IN(3600,7200,20000);
# 查询含有‘精‘字的所有员工信息 SELECT * FROM emp WHERE ename LIKE ‘%精%‘; # 查询以‘孙‘开头的所有员工信息 SELECT * FROM emp WHERE ename LIKE ‘孙%‘; # 查询第二个字为‘兔‘的所有员工信息 SELECT * FROM emp WHERE ename LIKE ‘_兔%‘; # 查询没有部门的员工信息 SELECT * FROM emp WHERE dept_name IS NULL; -- SELECT * FROM emp WHERE dept_name = NULL; # 查询有部门的员工信息 SELECT * FROM emp WHERE dept_name IS NOT NULL;