|-----“mysql service”------>后台-------》输入密码后登录(装mysql)
|-------show databases; 显示所有的数据库 系统数据库尽量不要动
|-------create database 数据库名称; 创建一个数据库
|-------use 数据库名称; 切换到具体的数据库中
|--------自创的数据库包含 数据表 视图 存储过程
|------show tables;显示当前数据库的数据表
|------创建数据表 语法
create table 表名
(
id int,
namevarchar(20),
ageint
)
|-----查看数据表的结构
desc数据表名称
|------客户端 SQLyog 连接后台(mysql)
|-----mysql端口号 :3306
|------1:连接池 数据库(服务器 1台) 多个用户连接一个数据库(连接池 jndic3p0)
|------2: 数据库优化事情 分区 100w数据
|-----3:事务:回滚 保证数据安全!
|-----4:缓存:只要数据不更改情况下,把取出的数据暂时存放到内存中,称这种方式缓存!
|------5:日志:只要任何用户操作数据库,那么日志都会记录下来!
|-----小结:如果delete和update不带条件的话,数据表所有的数据都会更改或删除!
#删除数据
#delete from 表名 [where id=];
DELETE FROM info WHERE id=1;
#修改数据
#update 表名 set 字段=值 where 条件
UPDATEinfo SET NAME='腊鸡' WHERE id=3;|------自动增长
CREATE TABLE student
(
sidINT PRIMARY KEY AUTO_INCREMENT,
snameVARCHAR(200)
)
#添加:自动增长列?
INSERT INTO student(sname) VALUES('aaa');
INSERT INTO student(sname) VALUES('ccc');
INSERT INTO student(sname) VALUES('ddd');
SELECT * FROM student;
DELETE FROM student;
INSERT INTO student(sname) VALUES('小明');
#删除数据表2 truncate 让自增重新开始
TRUNCATETABLE student;|------char varchar 区别?
char:固定 char(20) 只占用了2个,剩下不会回收!
varchar:可变 varchar(20) 只占用了2个,剩下18,mysql会回收!
什么的情况用char的或varchar?
存储的性别可以用char(2)
地址 varchar(20)
哪些字段是会经常发生改变,就用varchar(),否则可用char
|-----约束 : mysql中没有检查约束 可以利用set或enum代替检查约束
|------对原有的数据表做一些更改!
CREATE TABLE student4
(
sidINT PRIMARY KEY,
snameVARCHAR(200)
)
SELECT * FROM stu;
#修改数据表的名称
ALTER TABLE student4 RENAME stu;
#对原有的数据表添加字段
ALTER TABLE stu ADD sage DATETIME;
#对原有的字段 更改
ALTER TABLE stu CHANGE sname NAMEVARCHAR(20);
#对原有的字段进行删除
ALTERTABLE stu DROP sage;
基本案例:
数据表结构修改
基本语法:
1. 增加列语法:alter table 表名 add 列名 类型(长度) 约束;
2. 修改现有的列类型: 主要是修改长度和约束
语法:alter table 表名 modify 列名 类型(长度) 约束;
修改现有的列名:语法 alter table 表名 change 旧列名 新列名 类型(长度) 约束;
删除现有列: 语法 alter table 表名 drop 列名;
修改表名: rename table 旧表名 to 新表名
修改表的字符集:alter table user character set uft8;
Desc 表名;查看表结构
Showtables 查看当前数据库所有存在的表
Show create table 表名:查看建表语句和字符集
1. 在user2表里面新增一个address列
a) Alter table user2 add address varchar(100);
修改address列,把长度变为50,且不能为空
Alter table user2 modify address varchar(50) not null;
删除address列
Alter table user2 drop address;
所有数据表结构的操作语句都是DDL(数据库定义语言)
数据库表中记录的CRUD操作
1. 插入数据
向数据表中插入记录:
语法: insert into 表名(列名,列名,列名……) values(值,值,值…….) ; 为数据表的每列 进行赋值
注意事项:
1.插入值 类型必须和列类型匹配
2.值长度不能超过列定义长度
3.值的顺序和列顺序对应
4.字符串和日期类型 必须加上单引号
5.插入空值可以写NULL
在user2表中插入数据
语法1:insert into user2 (id,name,gender……)values(……..);
语法2:省略所有列名,但是后面值必须要和表中所有列进行匹配,按照表中的数据
insert into user2 values(………);
语法3:指定插入的列,可以为null的可以直接忽略掉,不能为null的必须给值
Insert into (列名) values(…..);
插入一条中文记录
ERROR1366(HY000):Incorrect string value :’\XC0/XF6’for column ‘name’ at row 1
因为:系统的客户端使用的是gbk编码,而mysql的client使用的是utf8编码
解决插入中文数据乱码问题:
第一种方式:当前窗口临时修改编码 set name gbk; 如果窗口关闭就会失败。
第二种方式: 修改配置文件 mysql.ini文件
客户端编码设置
服务器端配置:
![](https://i-blog.csdnimg.cn/blog_migrate/51a9ae5ddc05ba53d885a43bd543db9e.png)
修改mysql客户端字符集[mysql] default-character-set=gbk
更新语句:
使用update语句修改表中的数据
语法:update 表名 set 列名=值,列名=值=where 条件语句;
注意:如果没有where条件语句,默认修改所有行的数据
Update:语法可以用新值更新原有表中的各列数据。
Set子句指要修改哪些列和要给予那些值
Where子句指定更新那些行
案例:
1. 将所有人员的薪水修改为2000元.==è Update user2 setsalary=2000;
2. 将姓名为’张三’的员工薪水修改为1000元===è
语法:update user2 set salary=1000 where name=’张三’;
将姓名为’张三’的员工薪水修改为12000元,job修改为’架构师’
Update user2 set salary=12000,job=’架构师’ wherename=’张三’;
将张三的薪水在原有的基础上增加5000元
Update user2 set salary=salary+5000 where name=’张三’;
删除语句:
Delete from 表名 where 条件
注意事项:
1. 如果不使用where子句,将删除表中所有数据
2. delete语句不能删除某一列的值
3. 使用delete语句仅删除数据记录,不删除表本身。如果要删除表,使用drop table 语句
4. 删除表中数据也可以使用 truncate table 语句,它和telete有所不同,参考mysql API
案例:
删除表中的name=’张三’的记录
删除表中的所有记录
使用delete和TRUNCATE同时做实验。
Delete删除数据,是逐行删除的。
TRUNCATE 删除数据,先把表直接删除掉,然后重新创建表。效率:高于delete
TRUNCATE是属于DDL,delete属于DML=======事物管理只能对DML有效。
Delete删除的数据可以回滚。
查询语句
语法:select [distinct] * |列名,列名,……from 表名;
Select:指定查询那些列的数据。
* 号代表查询所有列
From 指定查询那张表
Distinct 可选,显示结果,可以去掉重复的记录(必须数据是完全一样的)
案例:创建一张学生表
Create table student(
Id int primary key auto_increment,
Name varchar(20) not null,
Chinese double,
Math double,
English double
);
多条插入数据
Insert into student values(null,’张三’,85,75,75),(null,’李四’,85,85,95),(null,’王五’,100,85,95);
1. 查询表中所有学生的信息
Select * from student;
2. 查询表中所有学生的姓名和对应的英语成绩
Select name,english from student;
3. 过滤表中重复的数据
Select distinct english from student;