mysql中的数据表table语法

1、创建数据表 create table 表名(列名 类型(长度),列名 类型(长度) ...) character set 编码集;
* 如果不设置编码集,数据表将采用数据库默认字符集
  create table users(
   id int,
   name varchar(40),
   password varchar(40),
   birthday date
);
* 所有数据类型中,除了char 、varchar 必须指定长度,其它类型默认长度

创建一个员工表employee
id     整形
name     字符型
gender     字符型
birthday     日期型
entry_date     日期型
job     字符型
salary     小数型
resume     大文本型

create table employee (
   id int,
   name varchar(40),
   gender varchar(10),
   birthday date,
   entry_date date,
   job varchar(20),
   salary double,
   resume longtext
);
2、通过desc语句 查看表结构
语法:desc 表名;

单表约束:主键约束(唯一标识一条记录)  唯一约束(该字段内容不允许重复) 非空约束(值不能为空)
主键约束----- primary key 不能为空、不能重复
* 主键数字类型,一般设置主键自动增长 mysql设置自动增长 auto_increment
唯一约束 ----- unique 一张表只有最重要那个字段才能作为主键
非空 ----- not null


create table employee (
   id int primary key not null auto_increment ,
   name varchar(40) unique not null,
   gender varchar(10) not null,
   birthday date not null,
   entry_date date not null,
   job varchar(20) not null,
   salary double not null,
   resume longtext not null
);

3、数据表修改

向已有数据表添加一列 :alter table 表名 add 列名 类型(长度) 约束;
改变已有数据表一列类型、长度: alter table 表名 modify 列名 类型(长度) 约束;
改变已有数据表一列的名称 : alter table 表名 change 旧列名 新列名 类型(长度) 约束;
删除已有一列 : alter table 表名 drop 列名;
修改表名: rename table 旧表名 to 新表名;
修改表的字符集:alter table student character set utf8;
练习
在上面员工表的基本上增加一个image列 ----- alter table employee add image varchar(255);
修改job列,使其长度为60  ------ alter table employee modify job varchar(60) not null;
删除gender列。------ alter table employee drop gender;
表名改为user。 ----- rename table employee to user;
修改表的字符集为utf8  ----  alter table user character set utf8;
* show create table user;
列名name修改为username ---- alter table user change name username varchar(40) unique not null;

4、数据表删除
语法: drop table 表名;
* show tables; 查看当前数据 中所有表

第三部分:对数据表中数据记录 进行 增删改查
1、表记录的插入
语法:insert into 表名(列名,列名,  .... ) values(值, 值, ....)
* 值个数应该列个数相同,值顺序和列顺序相同,值类型和列字段类型匹配
步骤
1) 启动cmd窗口
2) mysql -u root -p 回车 输入密码
3) 创建数据库 day11 ------ create database day11 ;
* show databases ; 查看当前所有数据库
* show create database day11 ;
4) 创建数据表 ,先切换数据库  use day11;
* select database();
5) 创建数据表
create table employee (
   id int primary key not null auto_increment ,
   name varchar(40) unique not null,
   gender varchar(10) not null,
   birthday date not null,
   entry_date date not null,
   job varchar(20) not null,
   salary double not null,
   resume longtext not null
);
* desc employee; 查看表结构
6) 插入数据
insert into employee(id,name,gender,birthday, entry_date,job,salary,resume) values(null,'zs','male','1990-01-10','2012-10-10','hr',3000,'He is a good man!');
* 插入数据时,字符串添加 单引号 ''   ----  字符和日期型数据应包含在单引号中
insert into employee(id,name,gender,birthday, entry_date,job,salary,resume) values(null,'lisi','male','1980-01-10','2000-10-10','manager',8000,'He is a very good man!');

insert into employee values(null,'wangwu','female','1977-10-08','1999-11-12','BOSS',100000,'He is BOSS');

* 在插入数据时,如果有些列存在默认值或者可以为null ,插入省略部分列 。
create table person(
    id int primary key not null auto_increment,
    name varchar(40) not null,
    introduce varchar(255)
);

insert into person(name) values('zs'); --- 这里只要写不能为空列 就可以了

* 再插入语句时,省略所有列名
insert into person values(null,'lisi',null); ---- 省略所有列名,必须为所有列提供value值,按照数据表中列顺序

* 插入数据后,通过select * from 表名; -------  查询插入的数据

插入数据时,中文乱码问题
insert into employee values(null,'小丽','female','1995-10-08','2015-11-12','Sales',2000,'是一个有潜质的女孩子!');
* 查看数据库相关编码集 show variables like 'character%';
* 使用mysql客户端 --- 黑色窗口界面使用gbk输入方式

mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。
服务器端相关:database server system(永远无法修改 就是utf-8)
客户端相关 connection client results
解决插入乱码问题:将客户端相关三个编码集设置 gbk
set names gbk; ----- 快速设置客户端相关三个编码集 (临时设置当前窗口编码集)

修改mysql 配置文件,永久改变客户端编码集 ----- mysql/my.ini
[mysql] ---- 客户端配置
[mysqld] ---- 服务器端配置

2、数据表记录修改操作 update 语句
语法: update 表名 set 列名=值,列名=值 where条件语句

* 没有where语句,对所有数据行进行更新
update employee set salary = 5000 ; ---- 修改所有员工工资5000

练习
将所有员工薪水修改为5000元。 ------  update employee set salary = 5000 ;
将姓名为’zs’的员工薪水修改为3000元。update employee set salary = 3000 where name = 'zs';
* update employee set salary = 3000 where binary name = 'ZS';  ---- 条件比较前添加 binary 使比较更加精确严格
将姓名为’lisi’的员工薪水修改为4000元,job改为ccc。 --------- update employee set salary = 4000, job='ccc' where binary name = 'lisi';
将wangwu的薪水在原有基础上增加1000元。-------  update employee set salary = salary+1000 where name = 'wangwu';

3、数据表记录通过delete语句进行删除
语法:delete from 表名 where 条件语句;

删除一个表所有记录 truncate 表名; 效果与 delete from 表名;

truncate与delete 使用上区别 ?
truncate 删除记录后不可恢复的,不受事务管理,原理:先删除整个表,重新创建
delete 可以被事务管理 ,在事务中删除数据可以回滚恢复,原理: 一行一行删除数据记录
truncate 删除所有记录性能上 好于 delete

练习:
删除表中名称为’zs’的记录 。 ---- delete from employee where name='zs';
删除表中所有记录。  ---- delete from employee;
* 演示 事务的回滚 ,通过delete在事务中删除可以恢复的
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from employee;
Query OK, 3 rows affected (0.00 sec)

mysql> select * from employee;
Empty set (0.00 sec)

mysql> rollback;

使用truncate删除表中记录。-----truncate employee;  数据永远删除,不会恢复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值