MySql数据库详解(待续待续待续.....到约束最后一个)

1.创建一个名称为mydb1的数据库:

create database mydb1;
2.显示所有数据库:

show databases;
3.创建一个使用utf-8字符集的mydb2数据库: (注意这里的utf-8并没有'-')

create database mydb2 character set  utf8;
4.创建一个使用utf-8字符集,并带校对规则的mydb3数据库  校对规则参考MySql帮助文档的  字符集支持>(完整列表参见10.10节,“MySQL支持的字符集和校对”。)中utf8的校对规则,默认是utf8_general_ci。

create database mydb3 character set utf8 collate utf8_general_ci;
5.查看指定数据库的创建语句:

show create database mydb1;
6.删除指定数据库:

drop database mydb3;
7.将指定数据库字符集编码改成gb2312:

alter database mydb1 character set gb2312;
8.备份数据库:

*首先需要退出MySql的命令行窗口,用quit或者exit语句退到windows命令行窗口。

mysqldump -u root -p mydb1>g:mydb1.sql

*然后进入MySql命令行,删除被备份的数据库。再创建这个数据库, 并且选中这个数据库 use mydb1

source g:\mydb1.sql;

9.创建表(基本语句)

CREATE TABLE table_name
(
	field1 datatype,
	field1 datatype,
	field1 datatype,
)character set 字符集 collate 校对规则


10.修改表(注意:数据库名是不能修改的)


11.常用数据类型



12.插入一条数据:
首先创建一个表

CREATE TABLE test (
  userName varchar(100),
  age int(11) 
)
接着插入一条中文数据

insert into test (userName) values('张孝祥');
此时发现不能正确插入。

解决思路:

*首先看下插入的字符长度是否超过了数据库该字段限定的长度(发现并未超过)

*再查看表的字符集编码,show create table 表名  (发现是utf8,是可以保存中文数据的)

*一个mysql命令窗口就是一个操作数据库的客户端,相当于浏览器和服务器之间的关系。那么当客户端输入数据后传递给数据库,传递过去的数据肯定是以一个码表进行编码的,然后数据库再进行解码。当前mysql窗口默认是将送过去的数据用gb2312进行编码,但是不知数据库那边是以什么码表来进行解码的。此时,需要输入,show variables like 'character%';列出变量名类似于character的列表属性,发现其中有一条 character_set_client     | utf8  表示数据库用utf8码表对客户端传递过来的数据进行解码。由此可看出编码和解码的码表不一致,所以不能存储中文字符。这时修改数据库的解码方式set character_set_client= gb2312; 这时候能成功存入中文字符。但是查询数据的时候发现,依旧是乱码。原因是,从数据库查询出来的数据用了一种错误的编码送给了客户端。(类似response)这时我们再输入show variables like 'character%'; 发现 character_set_results    | utf8   此时 set  character_set_results= gb2312;再查询数据就可以看到正确的中文字符了。


13.删除记录:

TRUNCATE TABLE 语句,它和delete有所不同:
delete是一条一条的删除数据,而TRUNCATE 是摧毁一个表然后重新构建表结构,效率上来说要比deltete快的多。


14.查询语句:
SELECT [DISTINCT] *|{column1, column2. column3..}
		FROM	table;
lDISTINCT可选,指显示结果时,是否剔除重复数据
select distinct name,english from student;
name   english
xxx1         80
xxx1         90
当这两条数据执行上面那条sql语句时候,发现最后结果还是这两条数据,原因:distinct后跟了两个条件,当这两个条件都相同时才算一条相同数据。




--查询英语分数在 80-90之间的同学
select name from student where english>80 and english<90;
select name from student where english between 80 and 90;

--查询数学分数为89,90,91的同学
select * from student where math=80 or math=90 or math=91;
select * from student where math in(80,90,91);


需要注意的是例如count(userName) 不计算userName=null的行数 sum()函数也是。


15.约束:

*定义主键约束
  primary key:不允许为空,不允许重复
*删除主键:alter table tablename drop primary key ;
*定义主键自动增长
    auto_increment(MySQL特有/UUID类生成) 当主键定义成auto_increment时,就算删除所有数据,下一次再增加一条数据的时候,主键的排序是从删除前最大主键+1。如果想要主键从头开始,那么有两种办法一种是删除表,再创建表。还有种是 TRUNCATE TABLE 表名;摧毁表。但是 auto_increment并不常用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值