数据库操作:
1。创建数据库,并修改默认字符编码
create database 数据库名 [charset=字符编码];
ee:
create database dog charset=utf8;
ps:
1.1。如果数据库已经存在,那么会报错。可以通过下面的语句来创建数据库:
create database if not exists 数据库名;
其实就是在创建数据库的时候判断一下是否之前已经存在该数据库了。
1.2。如果想要创建一个用关键字命名的数据库,可以用反引号来创建。反引号的位置在数字1的左边,
一定要在英语半角格式下使用才生效。
ee:
create database `database`;
2。查询数据库
show databases;
ps:
database是复数的,不然会报错。
3。显示数据的创建语句,可以看到编码格式的
show create database 数据库名;
ee:
4。更改数据库
字符编码和数据库引擎
alter database 数据库名 [目标参数]
ee:
alter database dog charset=gbk;
5。删除数据库
drop database 数据库名;
ee:
drop database dog;
ps:
如果删除不存在的数据库会报错,最好是在操作之前先判断一把。
drop database if exists 数据库名;
6。选择数据库
use 数据库名;
ee:
use dog;
数据库表的操作
关系: 行---记录 列---字段
1。创建表
create table 表名(
主键字段 数据类型1 [null/not null] [default] [auto_increment] [primary key],
非主键字段 数据类型2,
...........
);
ps:
主键:非空唯一
数据库中只有字符,没有字符串的概念
用关键字做表名需要加反引号,用关键字做字段名需要加反引号,跟上面用关键字做数据库名做法一致.
数据类型: int /char(定长) /varchar(可变长)/text(大文本)/decimal(总位数,小数点后位数)
ee:
1.1 电话号码---varchar //性别---char //年龄---int/tinyint(max:255) //照片---不用binary,数据中只存储照片的路径
薪水---decimal //QQ---varchar //手机号---char
1.2 姓名---not null // 地址---not null //邮件---null //成绩---null
2。查看表
show tables;
ps:
tables是复数的。
3。查看已创建表(可显示表的详细信息)
show create table 表名 \G;
ee:
show create table dog \G;
ps:
\G: 表示table字段和create table字段的排列方式变成竖立的形式
未使用\G 时的表的明细截图:
从创建数据库到创建表过程截图:
漏了一点,还有就是能知道创建表的名字
4。显示表结构
describe 表名;
或者使用缩写形式的指令查询,效果是一样的:
desc 表名;
ee:
desc dog;
5。删除表
drop table 表名;
可以删除多个表,当有外键关系约束时,要注意删除顺序,先删除包含外键的从表,再删除主表。
drop table 表名1,表名2,...;
ee:
drop table dog;
drop table t1,t2,t3;
ps:
latin 2个字符一个中文
utf8 1个字符一个中文
latin编码环境下输入中文会导致无效值
6。查询字符编码:
show variables like ‘character_set_%‘;
数据操作
1。插入数据(增)
insert into 表名(字段名1,字段名2,......,字段名n) values(值1,值2,......,值n)
或者:(必须插入的值和数据表的字段顺序和个数都一致):
insert into 表名 values(值1,值2,......,值n)
自动增长主键id插入数据:(主键必须设置为null):
insert into 表名(id,字段名2,......,字段名n) values(null,值2,......,值n)
ps:
细节:
1.1。插入的字段可以和数据库中的字段顺序不一致,但是值必须和插入的字段的顺序保持高度一致,否则会报错。
ee:
insert into dog(id,name) values(1,‘tom‘);
1.2。插入字段是可以省略的,插入的值和数据表的字段顺序和个数都一致
ee:
insert into dog values(1,‘tom‘);
1.3。自动增长的主键id,在插入数据时可以id字段用null表示
ee:
insert into dog values(null,‘tom‘);
1.4。插入默认值(字段有指明使用默认值的时候)
ee:
insert into dog values(2,default);
2。删除数据(删)
delete from 表名 where 条件
delete和drop的区别
delete表示将表中的数据全部删除,但是表的字段仍存在。
drop表示表的所有信息全部被删除。
auto_increment 这个机制,当表中的记录被删除时,自动增长的记录不将再是被删除的记录的id号,
被删除得那条记录可以通过数据库的日志恢复
3。查询数据(查)
select 列名 from 表名 [where 条件] [order by 排序 asc|desc] [limit 分页参数(起始位置,查询的记录数)];
ps:
* 表示所有字段
asc 表示升序
desc 表示降序
(默认是按照升序排列)
limit 的使用细节
ee:
select * from dog limit 3; #限制取前3条记录
select * from dog limit 0,3; #和上面的语句等价
数据库中第一条记录的位置是标记为0.
补充: mysql运算符
比较运算符:>, >=, <, <=, =, <>(不等于)
逻辑运算符:and,or,not
4。修改数据(改)
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3 where 条件
一些问题:
主键列输入的数值,不允许为空;
一个表不可以有多个主键,但是主键可以由多个列组成;
标识列(自动增长列)不能为字符数据类型(数字自动增长);
聚合函数
sum(),avg(),max(),min(),count()
括号内带参数,参数是数据库表的字段名