格式1 mysql -u用户名 -p密码
mysql –uroot -proot
格式2 mysql -u用户名 -p (回车键)
密码
格式3 mysql -hip地址 -u用户名 -p密码
mysql –h127.0.0.1 –uroot -proot
exit
连接权限数据库: use mysql;
改密码:update user set password=password("123") where user="root";
先创建数据库
create test
导入命令
source D:\test01.sql
在MySQL外部导入
mysql -u root -p < test.sql;
DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter等
create database 数据库名;
create database if not exists 数据库名;
create database 数据库名 character set 字符集;
show databases;
show create database 数据库名;
修改数据库字符集格式
alter database 数据库名 default character set 字符集;
drop database 数据库名;
use 数据库;
2.查看正在使用的数据库
select database();
create table 表名 (字段1, 字段类型1, 字段2, 字段类型2 ...);
具体操作
CREATE TABLE student (
id INT not null auto_increment primary key,
name VARCHAR(20) not null comment '用户名称',
birthday DATE
)
1.查看某个数据库中的所有表
show tables;
desc tables;
3.查看创建表的sql语句
show create table 表名;
4.快速创建一个表结构相同的表
create table 新表名 like 旧表名;
drop table 表名;
2.判断表是否存在并删除表
drop table if exits 表名;
alter table 表名 add 列名 类型;
例如 :为学生表添加一个新的字段remark,类型为varchar(20)
alter table student add remark varchar(20);
alter table 表名 modify 列名 新类型;
alter table 表名 change 旧列名 新列明 类型;
alter table 表名 drop 列名;
rename table 表名 to 新表名;
alter table 表名 character set 字符集;
DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update等
insert into 表名 (字段名1, 字段名2, ...) values (值1, 值2, ...);
insert into 表名 values (值1, 值2, 值3…);
例子:
insert into student(id,name,age,sex,address,phone,birthday,math,english)
values(2,'小美',18,'女','上海市','18888888888','2011-12-12',65.5,99.2);
什么是蠕虫复制:在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
insert into 表名1 select * from 表名2;
update 表名 set 字段名 = 值 where 字段名 = 值;
update 表名 set 字段名 = 值, 字段名 = 值 where 字段名 = 值;
delete from 表名 where 字段名 = 值;
truncate table 表名;
truncate和delete的区别:
DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where等
select * from 表名;
select 字段1, 字段2, 字段3 from 表名;
select 字段1 as 别名, 字段2 as 别名 from 表名;
insert distinct 字段1,字段2 from 表名;
select 列名1 + 固定值 列别名 from 表名;
查询姓名、年龄,将每个人的年龄增加10岁
select name, age + 10 from student;
大于
<小于
<=小于等于
=大于等于
=等于
<>、!=不等于
select * from 表名 字段名 > 值;
and 多个条件同时满足
or 多个条件其中一个满足
not 不满足
例:
select * from 表名 字段1 > 值 and 字段2 < 值;
BETWEEN 值1 AND 值2
表示从值1到值2范围,包头又包尾
select * from 表名 where 字段 between '2013-01-01' and '2017-01-01';
MySQL通配符有两个:
%: 表示0个或多个字符(任意个字符)
_: 表示一个字符
select * from 表名 where 字段名 like '通配符字符串'
例如:查询姓名中包含’孙’字的英雄
SELECT * FROM hero WHERE name LIKE '孙%';
ASC: 升序, 默认是升序
DESC: 降序
select 字段名 from 表名 where 字段 = 值 order by 字段名 [asc | desc];
五个聚合函数:
count: 统计指定列记录数,记录为NULL的不统计
sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
max: 计算指定列的最大值
min: 计算指定列的最小值
avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0
select count(字段名| *) from 表名;
要结合聚合函数才有意义
select sum(字段名) from 表名 group by 字段名
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数
SELECT sex,count(*) FROM hero WHERE age < 30 GROUP BY sex HAVING COUNT(*) < 2;
LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];
思考:limit子句为什么排在最后?
因为前面所有的限制条件都处理完了,只剩下显示多少条记录的问题了!
-- 每页显示5条
-- 第一页: LIMIT 0,5; 跳过0条,显示5条
-- 第二页: LIMIT 5,5; 跳过5条,显示5条
-- 第三页: LIMIT 10,5; 跳过10条,显示5条
SELECT * FROM hero LIMIT 0,5;
SELECT * FROM hero LIMIT 5,5;
SELECT * FROM hero LIMIT 10,5;
PRIMARY KEY: 主键
UNIQUE: 唯一
NOT NULL: 非空
DEFAULT: 默认
FOREIGN KEY: 外键
AUTO_INCREMENT
DEFAULT