停止mysql服务(以管理员身份启动cmd)
net stop mysql
启动mysql服务
net stop mysql
启动mysql
cmd->mysql -uroot -proot
连接本机(其他数据库)
cmd->mysql -h 192.168.46.254 -uroot -proot
查看所有数据库实例
show databases;
查看当前用户
select user();
使用数据库
user test
MySQL命令
退出mysql命令行:quit \q exit
取消正在编写的命令:\c clear
修改结束分隔符:delimiter 分隔符号
显示当前正在输入的:\p
MySQLadmin命令
在命令行中创建数据库实例
cmd->mysqladmin -uroot -proot create oa
在命令行中删除数据库实例
cmd->mysqladmin -uroot -proot drop oa
修改当前用户密码
cmd->mysqladmin -uroot -proot ‘newpassword’
mysqldump命令
备份指定数据库实例
mysqldump -uroot -proot helloyc_x > d:\helloword.sql
备份指定数据库实例中的指定表
mysqldump -uroot -proot test user > c:\user.sql
恢复(导入)数据
进入到指定的数据库实例
source *.sql文件所在路径
SQL != 数据库
SQL:结构化查询语句 Structured Query Language结构化查询语言,一门独立于数据库的操作命令,
任何关系型数据库几乎都支持sql,在不同的数据库管理系统(DBMS)存在细微差异
SQL分类
1.DDL数据定义语句(create,drop,alter…)
2.DML数据操作语句(insert,update,delete,select 增删改查)
3.DCL数据控制语句(grant,revoke)
创建一个人事管理系统的数据库:OA
1.创建数据库实例
create database oa;
2.使用数据库实例
use oa;
3.创建数据表(员工表:工号,姓名,性别,职位,月薪)
create table emp(
eno int,
ename varchar(32),
sex char(8),
ob varchar(16),
sal float
);
建表语法结构
create table emp(
列名称 列类型
…
);
4.删除表中的指定列(前提是表中列没有数据)
alter table emp drop sex;
5.想表中新增一个列
alter table emp add dept varchar(16);
6.修改表中指定列的类型(前提是表中没有数据)
alter table emp modify sal double;
7.删除表
drop table emp;
8.修改表中列名称
alter table emp change sdepart sdepartnum int;
9.修改表名称
alter table emp rename to employee;
任务
创建两张表
1.员工表(
工号:int, 主键
姓名:varchar, 不为空
职位:varchar, 不为空 默认值’普通员工’
手机号:varchar, 不为空 check(len(phone)=11)
月薪:float,
部门编号:int foreign key references dept(dno)
)
2.部门表(
部门编号:int, 主键 自动增长
部门名称:varchar, not null unique
部门分机号:varchar not null unique
)
部门表的创建(主键在编写时定义)
create table dept(
dno int primary key auto_increment,
dname varchar(32) not null unique,
tel varchar(16) not null unique
);
部门表的主键在结束时定义
create table dept(
dno int auto_increment,
dname varchar(32) not null unique,
tel varchar(16) not null unique,
primary key(dno)
);
员工表的创建
create table emp(
eno int primary key auto_increment,
ename varchar(32) not null,
job varchar(32) not null default ‘普通员工’,
phone varchar(11) check(len(phone)=11),
sal float,
dno int references dept(dno)
);
上述部门编号在创建外键约束时,不需要foreign key
DML语句使用(数据操作语句)
1.向表中添加一条记录
insert into staff values(2,’孙悟空’,’大师兄’,’119’,10000,11);
insert into staff(snum,sname,spost,sphone,salary,sdepartnum) values(3,’猪八戒’,’二师兄’,’911’,500,12);
推荐使用第二种,能够提升效率,而且便于观察。
2.向表中添加多条记录
insert into staff(snum,sname) value(4,’沙悟净’),(5,’白龙马’);
3.删除数据
delete form staff where enum = 2;
4.修改数据
update staff set job = ‘普通员工’ where job is null;
null !=”
数据完整性的维护
约束
主键约束 primary key
不为空 not null
唯一 unique
检查约束 check
外键约束 foreign key
触发器
添加主键约束
alter table staff add constraint pk_enum primary key(snum);
添加不为空约束同时设置默认值
alter table staff change sname sname varchar(32) not null default ‘匿名’;
添加不为空以及唯一约束
alter table department change dname dname varchar(32) not null unique;
设置检查约束
alter table staff add constraint ck_sex cheek(sex in(‘男’,’女’));
设置外键约束(被设置外键约束的列必须是另一个表的主键列)
alter table staff add constraint fk_dnum foreign key(sdepartnum) references department(dnum);
mysql 数据类型
字符串
char
varchar
nchar
nvarchar
数值
int\integer
float
double
decimal
日期类型
date(日期格式 yyyy-MM-dd)
time(时间格式 HH:mm:ss)
datetime(日期时间格式:yyyy-MM-dd HH:mm:ss)
year()
timestamp
大文本
text
二进制类型
blob
char和varchar区别
char定长字符串类型,char类型存储的字符串不论长度是否达到指定长度,都会沾满char设定的空间,但是在存储定长数据时
,效率较高,所以char类型一般用于声明长度固定的数据(性别,手机号,身份证号)
varchar是可变长度的字符串类型,存储的数据长度会跟随实际添加的数据长度而自动申请空间,有效
的节省空间(空间利用率高),效率不如char,一般varchar用于长度不定的数据(家庭住址,姓名。。)
nchar 和char,varchar与nvarchar区别?
nchar,nvchar长度是以字符为单位来存储数据
char,varchar长度以字节为单位
在使用中文数据时尽量以nchar,nvarchar为参考