常见数据库
oracle,mysql,sql server,DB2
RDBMS:Relational database management system关系型数据库管理系统 管理员+仓库
- RDBMS: 管理员(manager) + 仓库(database)
- database = N*table
- table = 表结构 + 表记录
MySQL
- 使用管理员打开cmd
- net start mysql :启动服务器
- net stop mysql :关闭服务器
- 在bin目录的mysqld.exe是服务器程序,mysql.exe是客服端程序
- my.ini是mysql配置文件
- 启动mysql客户端:mysql -uroot -p123456 -hlocalhost
- 推出mysql客户端:exit/quit
SQL语言(Structured Query Language)分类
- 不同RDMS都有相同的SQL,但也有各自特有的语言
- DDL(Data Definition Language):数据大一语言,用来定义数据库对象:库,表,列等;
- DML(Date Manipulation Language):数据库操作语言,用来定义数据库记录:增删改查
- DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别,创建用户之类的;
- DQL(Data Qurey Language):数据查询语言,用来定义查询记录
具体语法
- show databases; 展示所有数据库名称
- use 数据库名; 进入数据库
- CREATE DATABASE 数据库的名称; 创建数据
- CREATE DATABASE if not exists mybd3; 创建数据库
- DROP DATABASE if exists mybd3; 删除数据库
数据类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
DOUBLE | 8 bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
DDL表的操作:
- create table tb_stu(number char(11), name varchar(50),age int, gender varchar(10));
- show tables; 展示所有的表;
- desc 表示; 展示表的具体名称
- 修改表:
添加列:
修改表:mysql> alter table tb_stu -> add( -> education varchar(50) -> );
删除列:mysql> alter table tb_stu -> modify 列 列类型;
修改表名称:mysql> alter table tb_stu -> drop 列;
mysql> alter table tb_stu -> rename to 表名;
DML:对表增删改
- 插入数据:
mysql> insert into stu(
-> number,name,age,gender #对应的列名相同,可以减少(没有指定的列,默认值为NULL)
-> )
-> values(
-> '202018','金科','18','男'
-> );
- 修改数据
修改一整列数据
update stu set age=18; #update stu set 列=18
加条件:
mysql> update stu set age=40
-> where name='林俊杰'; # 条件where name='林俊杰'
between and
update stu set age=age+1 where age between 10 and 1000;
in
update stu set age=18 where name in('金科','JJ Lin');
is null
update stu set name='佚名' where name is null; # in not null
删除行
delete from stu where name='佚名'; #不加where全部删除
DCL
-
一个项目创建一个用户,一个项目队员的数据库只有一个;
-
这个用户只能对这个数据库有权限,其他数据库你操作不了
-
创建用户:
- CREATE USER 用户名@IP地址 IDENTIFIED BY ‘密码’;
create user jinzong53@localhost identified by '123456';
-
用户授权
- GRANT 权限1,… 权限n ON 数据库.* TO 用户名@IP地址;
- 权限包括GRANT CREATE DROP INSERT UPDATE DELETE …
- GRANT ALL ON 数据库.* TO 用户名@IP地址
grant all on mybd3.* to jinzong53@localhost;
- GRANT 权限1,… 权限n ON 数据库.* TO 用户名@IP地址;
-
撤销权限
- revoke 权限1,…,权限n ON数据库.* FROM 用户名@IP地址
-
查看权限
- SHOW GRANTS FOR 用户名@IP地址
- 查看指定用户的权限
-
删除用户
- DROP USER 用户名@IP地址
DQL查询操作
- 对某一列去重复查询
select distinct deptno from emp;
- 运算查询
select empno,ename,job,ifnull(mgr,'BOSS'),hiredate,sal,comm,deptno from emp;
- 字符串拼接查询
SELECT CONCAT(ROW_NAME,ROW_NAME,…) FROM TABLE_NAME;
select concat("我叫",ename,"我的工作是",job) from emp;
- 列取别名
SELECT ROW_NAME (AS) OTHER_NAME, ROW_NAME (AS) OTHER_NAME …FROM TABLE_NAME;
select concat("我叫",ename,"我的工作是",job) as 自我 from emp;
- 模糊查询
SELECT ROW_NAME FROM TABLE_NAME WHERE ROW_NAME LIKE ‘msg_’;# msg加任意一个字符。
SELECT ROW_NAME FROM TABLE_NAME WHERE ROW_NAME LIKE ‘msg_’; # msg加任意数量的字符
mysql> select ename from emp where ename like 'a_';
Empty set (0.02 sec)
mysql> select ename from emp where ename like 'A_';
Empty set (0.00 sec)
mysql> select ename from emp where ename like 'A%';
-排序查询
SELECT * FROM TABLE_NAME ORDER BY ROW_NAME ASC/DESC;(asc是升序,desc是降序)
select * from emp ORDER BY sal ASC,comm DESC;
如果sal相同,则按comm降序排列