数据库的操作

数据库操作

查询所有数据库

mysql> show databases;

2.创建数据库(不能同名)

mysql> create database cgb2108;
mysql> create database cgb210801 default character set utf8;  #指定字符集,避免了中文乱码

3.删除数据库

mysql> drop database cgb2108;  #谨慎操作

表的操作

1.查询所有表

1,查询所有表
mysql> use cgb210801;  #使用指定的数据库
Database changed
mysql> show tables;  #查询所有表

2.创建表

语法: create table 表名(字段名称 字段类型(字段长度),字段2,字段3....)
mysql> create table tb_door(
    -> id int(11),
    -> door_name varchar(100),
    -> tel varchar(20)
    -> );

3.修改表

语法: alter table  表名    添加字段  字段名称 字段类型(字段长度)
mysql> alter table student add column address varchar(100);

4.查看表结构

mysql> desc student;

5.删除表

mysql> drop table 表名

表中记录的操作

1.查询表中所有记录

*  在实际中用具体数据记录代表,不用*

语法: 查询  所有    表名
mysql>select * from tb_door;

2.向表中插入记录 

语法:  插入数据    表名    值(字段1的值,字段2的值,字段3的值)
注意:表里有几个字段values需要提供几个值+值的顺序和字段顺序一致
mysql> insert into tb_door values(10,'test',"010-666");

3.修改记录

语法:  更新    表名   设置  字段名=字段的新值

mysql> update tb_door set   tel='010-857';

4.删除记录

语法: delete from 表名
mysql> delete from tb_door;  #删除了表里的所有记录

基础函数

lower--数据转小写

SELECT 'ABC',LOWER('ABC') from dept;

upper--数据转大写

select upper(dname) from dept

length--数据的长度

select length(dname) from dept

substr--截取[1,3]

SELECT dname,SUBSTR(dname,1,3) FROM dept;

concat --拼接数据

select dname,concat(dname,'123') X from dept

replace--把a字符替换成666


select dname,replace(dname,'a','666') X from dept

ifnull#判断,如果comm是null,用10替换

select ifnull(comm,10) comm from dept2

重点:小数位数round & ceil & floor
round四舍五入,ceil向上取整,floor向下取整

直接四舍五入取整

select comm,round(comm) from emp
–四舍五入并保留一位小数

select comm,round(comm,1) from emp
–ceil向上取整,floor向下取整

select comm,ceil(comm) ,floor(comm) from emp

查UUID

SELECT UUID()

时间

now()

select now() -- 年与日 时分秒
select curdate() --年与日
select curtime() --时分秒

year & month & day
–hour()时 minute()分 second()秒

select now(),hour(now()),minute(now()),second(now()) from emp ;
–year()年 month()月 day()日
select now(),year(now()),month(now()),day(now()) from emp ;

转义

单引号 ---加入\转义

条件查询(7个)



distinct---去除重复行(只可以用于单表)

SELECT DISTINCT loc FROM dept;

where--跟条件

and---并且   or --或   in  ---等于多个数

select * from emp where ename='tony' and deptno=2 --相当于两个条件的&关系
select * from emp where ename='tony' or deptno=1 --相当于两个条件的|关系
select name, sal from emp where sal in(1400,1600,1800);

like

通配符%代表0到n个字符,通配符下划线_代表1个字符

1%--以1开头的   %1以a结束   %a%包含

NULL 

用is 不是=

select * from emp where mgr is null --过滤字段值为空的
select * from emp where mgr is not null --过滤字段值不为空的

Between and

闭区间


select * from emp where sal<=3000 and sal>=10000--等效
select * from emp where sal between 3000 and 10000--等效

limit 分页查询

分页,限制数据展示的条目

1. 一个参数:列出前俩条---limit 2

2.俩个参数:从n+1条开始,展示p条信息 limit n,p

select * from emp limit 2 --列出前两条
select * from emp limit 1,2 --从第二条开始,展示2条记录

order by 默认升序

升序asc

1.数字查询:数字大小排序

2.字母:按照字母的顺序排序

3.日期:数字的大小排

4.中文:utf-8的码表来排

降序desc

聚合 aggregation(5个)

根据一列统计结果

count --使用count(1)

max/main--最大最小值

sum/avg--和平均

分组 group

组group by 根据什么时候分组果出现了聚合列和非聚合列都有的,一定需要分组

分组的规则:按照非聚合分组

过滤后必须用having 

char和varchar有什么区别?

char为定长字符串,char(n),n最大为255

varchar为不定长字符串,varchar(n),n最大长度为65535

char(10)和varchar(10)存储abc,那它们有什么差别呢?

char保存10个字符,abc三个,其它会用空格补齐;而varchar只用abc三个位置

主键、外键、唯一索引的区别?

Primary Key 主键约束,自动创建唯一索引
Foreign Key 外键约束,外键字段的内容是引用另一表的字段内容,不能瞎写
Unique Index 唯一索引,唯一值但不是主键
对于约束的好处时,数据库会进行检查,违反约束会报错,操作失败。数据库提供了丰富的约束检查,还有其他约束,但现今弱化关系型数据库的前提下,基本已经很少使用,记住上面三个即可。

drop、delete和truncate之间的区别?

drop删除库或者表,数据和结构定义

delete和truncate只是删除表的数据

delete可以指定where条件,删除满足条件的记录,tuncate删除所有记录

对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
 

什么是事务

数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

事务4个特性ACID

原子性(Atomicity,或称不可分割性)、

一致性(Consistency)、

隔离性(Isolation,又称独立性)、

持久性(Durability)。

隔离级别

事务隔离分为不同级别,包括

读未提交(Read uncommitted) 安全性最差,可能发生并发数据问题,性能最好
读提交(read committed) Oracle默认的隔离级别
可重复读(repeatable read)MySQL默认的隔离级别,安全性较好,性能一般
串行化(Serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发


约束

上一篇:Python的线程02 多线程展示


下一篇:(柯西)科希分布代码实现