MySQL数据库的基本操作语言
show databases;--查看当前所有的数据库
use databaseName; --使用当前的数据库
show tables;--查看当前库中所有的表
use databaseName;--选择使用数据库
exit;--进入mysql之后,退出当前数据库
数据库 --数据表的集合
数据表 --表是数据的集合
在DOS窗口下执行:连接mysql的命令
mysql -h 主机地址 -u用户名 -p用户密码
远程连接失败:一般来说是网络没有开启:
开启网络:net start mysql
远程连接数据库:
ping ip看能不能ping通。
192.168.203.47
172.29.8.1
ip:本机的IP地址
localhost
127.0.0.1
192.168.203.47
远程连接:
TCP/IP 协议
SSH 连接
HTTP 协议连接
A连接数据库
登录本机:
1、mysql -u userName -p passWord
2、mysql -h localhost -uuserName -ppassWord
3、...>mysql -u root -p
Enter password:root(用户密码)
登录远程:mysql -h host -uuserName -ppassWord
B使用mysql的根用户
use mysql;
C创建一个新用户
create user cy;
D给新用户创建密码
update user set password=password('htj') where user='cy';
C、D创建新用户并创建密码
create user userName identified by password;
E给用户授权
grant all privileges on *.* to cy@'%' identified by 'htj' with grant option;
grant all privileges *.* to java@'%' identified by 'java' with option;//授所有的权限
F修改密码
1、使用set password就可以修改
语法:进入用户中就可以修改
set password for user@localhost = password('newPass');
2、使用mysqladmin来修改密码
语法:在dos中输入mysqladmin这个命令
mysqladmin -uroot -poldPassword password newPassword
3、修改mysql的密码
语法:
use mysql;
update user set password = password('newPass') where user = 'root' and host = 'localhost';
G权限
grant all privileges; --全部的权限(select update delete insert的权限)
grant select,update on mysql.* to zyf@'%' identified by 'zyf' with option;
flush privileges; --刷新授权
数据表:存放数据
字段的类型:
int(10) 、integer(10) 整型
char(20)、varchar(20) 字符型
date(年月日)、time(时分秒)、datetime(年月日时分秒) 时间
float、double 浮点型
text 长文本
blob 可以存放二进制文件
建表: create table tableName (columnName columnType(length));
例:create table user (id int(10),name varchar(20));
添加一个字段:
alter tableName add column 'columnName' varchar(20) null after 'id';
删除表的字段
alter table tableName drop column 'columnName';
修改表结构:
ALTER TABLE `user`
CHANGE COLUMN `sal` `saller` double(5,2) NULL DEFAULT NULL AFTER `name`;
查看表结构:desc tableName;
删除表:drop table tableName;
删除表里面的数据:
delete from tableName;
truncate tableName;(可以同时删除数据库水位线)
主键:识别数据的唯一标识
CREATE TABLE `NewTable` (
`id` int NOT NULL ,
PRIMARY KEY (`id`)
);
外键:一张表的外键关联另外一张表的主键
例:学校这张表关联学生
ALTER TABLE `student` ADD FOREIGN KEY (`school`) REFERENCES `school` (`id`);
插入数据--insert
insert into table(column1,column2 ) value ('value1',value2);
commit; 提交数据
修改数据--update(更新数据,需要添加条件)
update student set name = 'newName' where id = ?;
删除数据--delete
delete from student where id = 2;
查询语句
语法:
SELECT column_name,column_name
FROM table_name
[WHERE clause]
[OFFSET M] [LIMIT N]
最简单的查询
select id,name from student;
select name from student;
select * from student;
select id 编号, name 名字 from student;
where条件
select * from student where id = 1;
select * from student where id>3 and name='峨眉山';
like语句(模糊查询) where的子句
select * from student where name like '%林%';
mysql的排序
select * from student order by name asc;//升序排列
select * from student order by column desc;//降序排列
分组查询:group by
例:新建一个员工表
emp
id --员工的ID
name --名字
sal --员工的薪水
dept --员工的部门,部门编号
create table emp (
id int(20),
name varchar(20),
sal float(10,2),
dept int(20),
primary key id
);
查询一下有几个部门
select count(*) 部门的数量 from emp group by dept;//以部门分组
count(*)总数
avg(sal)平均数
max(sal)最大数据
min(sal)最小数据
sum(sal)合计
复杂查询
关联:
emp --雇员表
id --雇员的编号
name --雇员的名字
sal --雇员的薪水
comm --雇员的奖金
dept --雇员的部门编号
dept --部门表
id --部门的编号
name --部门名称
loc --部门的地址
create table emp(
id int(10),
name varchar(20),
sal float(8,2),
comm float(8,2),
dept int(10)
);
create table dept(
id int(10),
name varchar(20),
loc varchar(50)
);
添加主键,并设置主键自增长
ALTER TABLE `emp`
MODIFY COLUMN `id` int(10) NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (`id`);
向dept表中添加数据
insert into dept(name, loc) value('销售部门','北京');
insert into dept(name, loc) value('研发部门','上海');
insert into dept(name, loc) value('人力资源部门','广州');
创建一个外键关联另外一张表的主键,并设置级联删除和更新
ALTER TABLE `emp` ADD CONSTRAINT `foreign_emp_dept_id` FOREIGN KEY (`dept`) REFERENCES `dept` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
向emp表中添加数据
insert into emp(name,sal,comm,dept) value('刘德华','3000','100',1);
insert into emp(name,sal,comm,dept) value('张三丰','5000','0',3);
insert into emp(name,sal,comm,dept) value('和珅','1000','400',1);
insert into emp(name,sal,comm,dept) value('李波','2000','700',3);
insert into emp(name,sal,comm,dept) value('钱硕','1900','300',2);
insert into emp(name,sal,comm,dept) value('张飞','800','50',1);
insert into emp(name,sal,comm,dept) value('关羽','1100','100',2);
insert into emp(name,sal,comm,dept) value('刘备','1500','0',3);
insert into emp(name,sal,comm,dept) value('赵云','2000','100',1);
insert into emp(name,sal,comm,dept) value('诸葛亮','4500','200',1);
insert into emp(name,sal,comm,dept) value('马岱','600','700',1);
查询:
查询一下销售部门有多少个人?
1)select id from dept where name = '销售部门';
2)select * from emp where dept = 1;
select * from emp where dept = (select id from dept where name = '销售部门');
销售部门中工资小于3000的员工,奖金增加200元。
1、第一步先查询销售部门的编号
select id from dept where name = '销售部门';
2、通过销售部门查询员工的信息
select * from emp where dept = (select id from dept where name = '销售部门');
3、查询销售部门小于3000元的员工
select * from emp where dept = (select id from dept where name = '销售部门') and sal < 3000;
4、只要符合上面你的条件,奖金增加200元
select *,comm+200 from emp where id in
(select id from emp where dept = (select id from dept where name = '销售部门') and sal < 3000);
update emp e set e.comm = (e.comm + 200) where e.id in
(select id from emp where dept = (select id from dept where name = '销售部门') and sal < 3000);