1、SQL简介:
Structured Query Language 结构化查询语言。
常用的数据库:
a.Oracle
b.DB2
c.MySQL
d.SQL Server
e.ProstgreSQL
2、安装好了mysql,登陆:
mysql -uroot -proot (-u是用户名,-p是密码,注意中间没有输入空格)
mysql -u root -proot (-u是用户名,-p是密码,注意-u中间有空格也可以)
mysql -u root -p root (-u是用户名,-p是密码,注意-p中间有空格会提示你输入密码)
注意:默认本地的 -h localhost可以不用输入。
3、修改默认的字符集:
我们安装mysql的时候如果选择默认的字符集 lantn1 (不支持中文),想改utf8怎么改?
a.直接修改my.ini配置文件
default-character-set=utf8
character-set-server=utf8
b.重启mysql服务:
net stop mysql
net start mysql
c.登陆mysql查看是否有更改过来:
show variables like "%character%";
成功OK。
还有一种直接在命令行里面修改
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
如果你想使用界面配置:
在 C:\Program Files\MySQL\MySQL Server 5.5\bin 目录下打开MySQLInstanceConfig.exe 这个程序
4、常用的sql语句:
show databases; 查看所有的数据库
create database mydb ;#创建数据库
use mydata; 使用数据库
drop database mydb ;#删除数据库
show tables;显示所有的表
show create database mydb ;#查看创建数据库的语句
alter database mydb character set utf8 ;#修改数据库mydb1的字符集为utf8
#创建表t
create table t(
id int ,
name varchar(30)
) ;
show create table t ;#查看创建表的源码
#创建表t1,使用字符集gbk
create table t1(
id int ,
name varchar(30)
)character set gbk ;
查看表的结构:
desc t ;
插入数据:
insert into t(id,name) values(1,'myname') ;
insert t(id,name) values(2,'myname1') ;
insert t4 values(3,'myname2'); #省略字段,意味着所有的字段都必须给值(自增例外)
更新数据:
update t set name='myname_modify' where id = 1 ;#将表t的第1条记录姓名字段改为myname_modify
删除数据:
delete from t ;#删除所有的记录
delete from t where id = 1 ; #删除一条数据
修改表结构:
alter table t add address varchar(100); #给表t增加一个字段address
查看数据:
select * from t ; #查看所有数据
select * from t where id = 2 ; #查看id=2这个记录
select * from t where age >=20 and age <=30 ;#范围查询,查看年龄在20~30之间的人
模糊查询:
select * from 表名 where 字段名 like 字段表达式
% 表示任意字符数
_ 表示任意的一个字符
[] 表示在某个区间
select * from t where name like "%my%" ;//查询所有name字段里面,有my这个字符的记录
给字段起别名:
select id as 编号,english as 英语,history as 历史 from t ;
查询结果排序(order by ):
select * from score order by china asc;#升序排列
select * from score order by history desc;#降序排列
select * from score order by china asc,history desc; #组合排序,先排china,再排history
除去重复的数据:
select distinct name from t; #查询name字段值,把相同的名称过滤掉了
5、数据的完整性:
数据完整性是为了保证插入到数据中的数据是正确的,它防止了用户可能的输入错误。
分为三类:
a.实体完整性:规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。
主键的特点:不能为null,必须有值,且不能重复。
主键分类:
逻辑主键:不代表实际意义,只是区分不同记录用的。比如id
业务主键:代表者具体的实际意义。比如身份证号 用户名
例如:
CREATE TABLE t(
id int PRIMARY KEY auto_increment,#auto_increment 数据库自动增长
name varchar(100)
);
b.域完整性:
指数据库表的列(即字段)必须符合某种特定的数据类型或约束。
非空约束:not null
唯一约束:unique
例如:
CREATE TABLE t1(
id int PRIMARY KEY auto_increment,
username varchar(100) not null unique, 非空和唯一约束
gender varchar(10) not null 非空约束
);
c.参照完整性(多表):
表间的关系:
一对多(用的最多)
多对多(用的很多)
一对一(几乎不用)
例如:一对多(部门和员工的关系),外键约束。
CREATE TABLE department(
id int primary key,
name varchar(100)
);
CREATE TABLE employee(
id int primary key,
name varchar(100),
salary float(8,2),
department_id int,
CONSTRAINT department_id_fk FOREIGN KEY(department_id) REFERENCES department(id)
);
CONSTRAINT:约束的关键字
FOREIGN KEY:外键
department_id_fk:约束的名字,在数据库中这个名称必须唯一。
department_id:外键的字段,我们通过这个字段和部门表的id关联起来。
id:这个必须是主键
上面是在创建表的时候就创建了外键约束,如果我们已经创建好了表,再创建约束可以:
alter table employee add CONSTRAINT department_id_fk FOREIGN KEY(department_id) REFERENCES department(id);
alter table employee drop foreign key department_id_fk ;删除约束
注意:
如果你在employee表里面添加一条数据,这个数据的department_id字段值不在department表里面id里面,就会出错。
6、多表的查询:
数据库存储数据是按照分页存储的,默认帮你建了索引,你也可以自己建立索引。
索引就类似于书的目录。
例如你有10000条记录,你需要的查找的数据在8000行,需要比较10000次才能取到你要的数据,
显然这个效率是比较低的。使用索引就比较快。
a.连接查询:
select * from t ,t1; 查询的结果会将2个表的字段合并。 id name id name
b.子查询:
子查询也叫嵌套查询,是指在select子句或者where子句中又嵌入select查询语句。
select * from t1 where id=(select id from t2 where name=’张三’);
c.联合查询:
联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,
然后返回没有重复数据行的查询结果
select * from t1 where price>200 UNION select * from t2 where id=1;
d.报表查询(使用数据库提供的函数):
SELECT COUNT(*) FROM t;统计t表中共有多少条数据
SELECT SUM(math) FROM student;统计一个班级数学总成绩
SELECT AVG(math) FROM student;一个班级数学平均分
SELECT MAX(chinese) FROM student;班级语文最高分
7、MySQL数据库的备份与恢复:
备份:
在cmd窗口输入:mysqldump -uroot -proot mydb >d:\mydb.sql
将数据库mydb备份到d盘mydb.sql
恢复:
前提:必须先创建数据库的名称
第一种方式,进入mysql命令行
create database mydb_bak;
use mydb_bak;
source d:/mydb.sql;
这样就可以恢复了。
第二种方式:直接在cmd命令行
mysql -uroot -proot mydb_bak < d:/mydb.sql