一、操纵表

1、表的关键信息

2、更新表名

更新表名:使用RENAME TABLE关键字。语法如下:
RENAME TABLE 旧表名 TO 新表名; 比如,生产环境投产前备份teacher表,使用如下语句:
RENAME TABLE teacher TO teacher_bak;

3、更新字段名

更新字段名:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名; 比如,修改teacher_name的字段名为teacher_nm,使用如下语句:
ALTER TABLE teacher RENAME COLUMN teacher_name TO teacher_nm;

4、更新字段类型

更新字段类型:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ALTER COLUMN 字段名 新字段类型; 比如,修改teacher_name的类型为VARCHAR(100),使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name varchar(100); 在更改类型的时候,更改前的类型和更改后的类型一定要能显示转换,否则会造成数据丢失。

5、更新字段NULL值

更新字段类型时,可同时设置字段NULL值、默认值,也是使用ALTER TABLE关键字,语法是一样的。

比如,修改teacher_name的类型为VARCHAR(100) NULL,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name varchar(100) null DEFAULT ‘’;

6、更新字段默认值

更新字段类型时,也可同时设置字段默认值,语法是一样的。

比如,修改teacher_name的类型为VARCHAR(100) ,默认值为’’,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name varchar(100) default ‘’; 更新字段默认值:也可使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值; 比如,修改teacher_name的默认值为’未知’,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name set default ‘未知’; 删除字段默认值:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT; 比如,删除teacher_name的默认值,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name drop default;

7、更新主键字段

设置主键:如果表已存在,但没有定义主键字段,可使用ALTER TABLE关键字设置主键。语法如下:
ALTER TABLE 表名 ADD PRIMARY KEY (主键字段列表); 比如,将teacher表的teacher_name和gender两个字段设置为主键,使用如下语句:
ALTER TABLE teacher ADD PRIMARY KEY (teacher_name,gender); 删除主键字段:如果表中已定义主键字段,可使用ALTER TABLE关键字删除主键。语法如下:
ALTER TABLE 表名 DROP PRIMARY KEY; 比如,将teacher表的主键删除,使用如下语句:
ALTER TABLE teacher DROP PRIMARY KEY; 更新主键字段:如果表中已定义主键字段,但想修改主键字段,比如说假如现在teache表的主键字段是teacher_name和gender,
现在想修改主键字段为teacher_id,也是可以的。

8、新增、删除字段

新增字段:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ADD COLUMN 新字段名 字段类型及其他属性; 比如,在teache表中新增年龄字段age,使用如下语句:
ALTER TABLE teacher ADD COLUMN age int not null default 0; 删除字段:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 DROP COLUMN 字段名; 比如,在teache表中删除年龄字段age,使用如下语句:
ALTER TABLE teacher DROP COLUMN age;

9、删除表

删除表:使用DROP TABLE关键字。语法如下:
DROP TABLE 表名; 比如,删除teacher表,使用如下语句:
DROP TABLE teacher;

二、插入数据

1、建表

CREATE TABLE teacher (
teacher_id VARCHAR(50) NOT NULL,
teacher_name VARCHAR(100) NOT NULL DEFAULT '未知',
gender VARCHAR(10),
PRIMARY KEY ( teacher_id)
);

2、插入整行字段

插入整行字段:关键字INSERT INTO
INSERT INTO 表名 VALUES (?,?,?,?); 假如需要向teacher表中插入两条数据:
#值的顺序与表中的字段顺序必须一致!不太安全;
INSERT INTO teacher VALUES ('T0001','高齐妍','男');
INSERT INTO teacher VALUES ('T0002','李红','女'); #安全
INSERT INTO teacher(teacher_id,teacher_name,gender) VALUES ('T0001','高齐妍','男');

3、插入部分字段

INSERT INTO teacher(teacher_id,teacher_name,gender) VALUES ('T0003', '李一萱',NULL);

#这种要求性别字段可为NULL
INSERT INTO teacher(teacher_id,teacher_name) VALUES ('T0003', '李一萱'); #这要求teacher_name字段设置了默认值
INSERT INTO teacher(teacher_id) VALUES ('T0004');

4、一次插入多行

INSERT INTO teacher VALUES ('T0001','高齐妍','男'),('T0002','李红','女');

注意:
 建议一条SQL语句插入的条数在1000条以下;
 还受限于数据库支持的单条SQL语句的长度;

5、借助其他表数据插入

INSERT INTO teacher SELECT * FROM teacher;

克隆表:
SELECT * INTO teacher_bak FROM teacher; CREATE TABLE teacher_bak AS SELECT * FROM teacher;

三、查询

1、建表

##建表
CREATE TABLE `student` (
`student_id` varchar(50) NOT NULL COMMENT '学生编号',
`student_name` varchar(100) NOT NULL DEFAULT '' COMMENT '学生姓名',
`gender` varchar(10) NOT NULL DEFAULT '' COMMENT '性别',
`birth_day` date NOT NULL COMMENT '生日',
`age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',
`class_id` varchar(50) NOT NULL DEFAULT '' COMMENT '班级编号',
`score` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '数学成绩',
`teacher_id` varchar(20) DEFAULT NULL COMMENT '老师编号'
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='学生'; ##插入部分数据
INSERT INTO `student` VALUES ('S20180001','方东美','女','2006-02-04',12,'G0101',80.65,'T0003'),
('S20180002','方香','女','2008-09-28',10,'G0101',75.48,NULL),
('S20180003','高紫菡','男','2006-07-22',12,'G0101',74.46,'T0003'),
('S20180004','胡未迟','男','2007-07-25',11,'G0101',51.27,'T0003'),
('S20180005','李咏颐','男','2007-03-16',11,'G0101',88.84,'T0003'),
('S20180006','吴灏潇','男','2008-04-19',10,'G0101',69.93,NULL),
('S20180007','吴明鸿','男','2007-11-18',11,'G0101',63.65,'T0003'),
('S20180008','吴鹏宇','男','2007-08-24',11,'G0101',84.69,'T0003'),
('S20180009','吴少雄','男','2007-08-04',11,'G0101',76.36,'T0003'),
('S20180010','习芬飘','女','2005-01-27',13,'G0101',83.42,'T0003'),
('S20180011','俞倚琳','女','2007-07-07',11,'G0101',97.38,'T0003'),
('S20180012','张琼雪','女','2006-06-12',12,'G0101',81.01,'T0003');

2、查询部分列

SELECT 字段列表 FROM 表名;

SELECT student_id,student_name,gender FROM student;

3、查询所有列

第一种写法(推荐),字段顺序可以变换:
SELECT teacher_id,teacher_name,gender,age,class_id FROM student; 第二种写法:
SELECT * FROM student;

4、排序返回结果

将查询结果排序后展示:关键字ORDER BY … [ASC/DESC]
SELECT 字段列表 FROM 表名
ORDER BY 字段1 [ASC/DESC],字段2 [ASC/DESC]…; SELECT student_id,student_name,age FROM student ORDER BY age ASC;
| | (等价)
SELECT student_id,student_name,age FROM student ORDER BY age; ##可以指定多个字段排序
SELECT student_id,student_name,age FROM student ORDER BY age ASC,student_name ASC; ##按列位置排序
SELECT student_id,student_name,age FROM student ORDER BY age ASC,student_name ASC;
| | (等价)
SELECT student_id,student_name,age FROM student ORDER BY 3 ASC,2 ASC;

5、限制返回结果

###
返回前几行:
关键字TOP、LIMIT
mysql没有TOP 两种写法:
 SELECT TOP 10 字段列表 FROM 表名;
 SELECT 字段列表 FROM 表名 LIMIT 10; 一般在两种情况下会使用:
 表数据太多,想随便查看一下表中的数据;
 一般与ORDER BY关键字配合使用,返回按某些字段排序后的前几行; ###
返回中间几行:
关键字LIMIT M OFFSET N(从第N行开始,返回M行记录) 两种写法:
 SELECT 字段列表 FROM 表名 LIMIT M OFFSET N;
 SELECT 字段列表 FROM 表名 LIMIT N,M; 这里的第N行,是从0开始算起的;
一般与ORDER BY关键字配合使用,按M行为一页,返回某一个分页的记录; ###
返回中间几行:
关键字LIMIT M OFFSET N(从第N行开始,返回M行记录) SELECT 字段列表 FROM 表名 LIMIT 0,10;
| | (等价)
SELECT 字段列表 FROM 表名 LIMIT 10; ###
返回后几行:
关键字TOP、LIMIT、ORDER BY SQL语句中,没有返回后几行的专用写法,一般转换为按返回前几行的相
反方式排序后,再返回前几行。使用这种方式变相的返回后几行。 第1步:先按学生编号倒序排序;
第2步:返回排序后的前5行;
第3步:将前5行数据升序排序; SELECT * FROM
(
SELECT TOP 5 *
FROM student
ORDER BY student_id DESC
)a
ORDER BY student_id ASC

SQL基础-操纵表及插入、查询的更多相关文章

  1. SQL语句 在一个表中插入新字段

    SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter ...

  2. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  3. sql 所有数据表中 插入字段

    declare @tablename varchar(200)declare @sql varchar(2000)declare cur_t cursor forselect name from sy ...

  4. SQL基础-连接表

    一.连接表 1.SQL JOIN 忘记在哪保存的某位网友的图,先明白SQL JOIN, 2.关于笛卡尔积 笛卡尔积: 两个集合的乘积 重新建student表和teacher表: student表: C ...

  5. SQL 多个表之间联合查询

    非常少用join,这次学学,并备忘两篇文章! 转自:http://hcx-2008.javaeye.com/blog/285661 连接查询 通过连接运算符能够实现多个表查询.连接是关系数据库模型的主 ...

  6. Sql Server根据表名生成查询的存储过程(查询条件可选)

    static void Main(string[] args) { string 表名 = "water_emstime"; string sql = "exec Get ...

  7. SQL基础-建表

    一.建表 1.创建表的两种方式 *客户端工具 *SQL语句 2.使用SQL语句创建表 表名和字段名不能使用中文:(一般为字母开头,字母.数字.下划线组成的字符串): CREATE TABLE关键字后跟 ...

  8. sql把一个表数据插入到另一张表

    把一个表数据插入到另一张表 insert into tableB (field1,field2,field3,field4) select field1,field2,field3,'val4' fr ...

  9. 6-02使用SQL语句向表中插入数据

    插入语句的语法: INSERT INTO 表() VALUES(值列表) 注意事项: 1:每次插入一行数据,不能只插入半行或几列数据. 2:每一个数据值的数据类型.精度和小数位数必须与相应的列匹配. ...

随机推荐

  1. 原!!Spring redis的Scan的坑,慎用!

    线上发现有机器,在发生某块业务大量请求时,后面就没有日志了,查看线程状态,如图1,发现很多线程被阻塞了,查看代码发现,用到了scan,如图2,百度之后,发现该操作不会自动释放redis连接,导致red ...

  2. 【Spring-AOP-学习笔记】

    http://outofmemory.cn/java/spring/spring-DI-with-annotation-context-component-scan https://www.cnblo ...

  3. 使用NODEJS实现JSONP的实例

    JSONP与JSON只有一字之差,我们在使用Jquery的Ajax调用的时候也是使用相同的方法来调用,两者的区别几乎只在于使用的dataType这个属性的不同.但是实际上JSON和JSONP是完全不同 ...

  4. Matlab观察者模式

    要点: 1.服务端(Subject)维护一个观察者的列表,以便能够向所有的观察者(Observer)推送信息 2.观察者可以获取服务端的状态 3.服务端和观察者可抽象,可以有多个不同实现 Subjec ...

  5. 全选全不选案例table表格

    全选全不选案例table表格 案例一纯table表格 <table class="table table-bordered"> <thead class=&quo ...

  6. js数组【续】(相关方法)

    一.数组的栈,队列方法[调用这些方法原数组会发生改变]var arr = [2,3,4,5,6];1.栈 LIFO (Last-In-First-Out)a.push() 可接受任意类型的参数,将它们 ...

  7. java开发手册-总结与补充

    1.分层领域模型规约 1.DO( Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象. 2.DTO( Data Transfer Object):数据传输对象, Se ...

  8. intellij IDEA github clone 指定分支代码

    1.问题描述 在实际开发中,我们通常会使用idea克隆一个新项目(clone),通常情况下,我们默认克隆的是master分支,但是如果master分支只是一个空文件夹而已,真正的代码在develop分 ...

  9. Oracle恢复流程图

    本图来自于网络,想当初小麦苗刚开始接触备份恢复的时候,就是靠着这张图来学习的,今天把这张图分享给大家,共勉. ............................................. ...

  10. Gitlab 重置 root 密码

    要重置root密码,请先使用root权限登录服务器.使用以下命令启动Ruby on Rails控制台: gitlab-rails console production 等到控制台加载完毕,您可以通过搜 ...