数据库学习(一)----基本原理
来源:互联网 发布:怎样化妆 知乎 编辑:程序博客网 时间:2024/06/04 19:33
SQL(StructuredQueryLanguage)
相当于画一个表格—-先画列,再画行
处于可读性的考虑,一般可以关键字全部大写,非关键字全部小写
(注:后面的例子使用的软件是MySQL/Navicat for MySOL)
DDL(DataDefinitionLanguage,数据定义语言)
DDL是对数据库对象进行操作的语言,数据库对象包括
表、视图、索引、序列。
创建表的语法
create table :列 表结构
表名(
列名 数据类型长度 约束,
列名 数据类型长度 约束,
。。。。
)
例如:
CREATE TABLE employee_dongzhixiao( id INT(4), name VARCHAR(20), gender CHAR(1), birth DATE, salary INT(6), job VARCHAR(30), deptno INT(2));
查询表语法
DESC table_name:查看表结构
看到表的列的名字,以及对应的类型,长度等
例如:DESC employee_dongzhixiao;
删除一张表的语法
DROP TABLE table_name
例如:DROP TABLE employee_dongzhixiao
DEFAULT关键字
用于为给定的列(字段)设置默认值
例如:
CREATE TABLE employee_dongzhixiao( id INT(4), name VARCHAR(20) NOT NULL, gender CHAR(1) DEFAULT 'M', birth DATE, salary INT(6), job VARCHAR(30), deptno INT(2));
数据库中字段无论是什么类型,默认值都是NULL
若使用DEFAULT指定了默认值,则使用指定的。
数据库中的字符串字面量是使用单引号的,虽然SQL语句
本身不区分大小写,但是字符串值是区分大小写的!
NOT NULL约束
在创建表的时候可以为列添加非空约束,被约束的
列在插入数据时必须给值。此列不允许为空。
修改表名
RENAME TABLE old_name TO new_name
需要注意:新的表名不能是数据库中现有的表
例如: RENAME TABLE employee_dongzhixiao TO emp_dongzhixiao
修改表:
为表添加新的字段(列),总是在表的最后一列追加
ALTER TABLE emp_dongzhixiao ADD
(
#可以有多个列定义
column_name1 datatype [DEFAULT expr],
…
)
ADD (hiredate DATE DEFAULT sysdate);
sysdate是一个日期的值,表示当前系统时间。
从表中删除一列
ALTER TABLE emp_dongzhixiao
DROP (hiredate);
修改表中现有的列
ALTER TABLE emp_dongzhixiao
MODIFY job VARCHAR(40) DEFAULT ‘CLERK’
注意:MySQL不支持一次修改多个列,其他数据库如Oracle支持一个MODIFY命令修改多个列定义
那样需要加在MODIFY后加上括号,如果想要MsSQL修改多个列,则可在MODIFY后使用拖个MODIFY命令
修改表字段时的注意事项:
1:尽量不修改字段类型。
2:字段长度尽量不要减少。
3:修改后的字段,只对新插入的数据产生影响,
修改字段前的所有数据不影响。
DML操作
向表中插入数据
INSERT INTO table_name
VALUES(1,’冬之晓’,28,’男’,0)
INSERT INTO
emp_dongzhixiao(id,name,salary)
VALUES(1,’boss’,1500)
INSERT语句是向表中插入数据
INSERT语句指定的列对应的值会被插入到表中
没有列举的列会插入NULL,但是,若该列有设置
默认值(DEFAULT关键字设置的),那么就插入
设置的默认值。
若某列为NOT NULL,执行INSERT语句时又没有
指定该列,那么插入会抛出违反为空约束的异常
执行INSERT语句时,若没有指定插入任何列,那
么就是全列插入,注意,给的值顺序必须与表中
列的顺序完全一致,并且不能忽略任何一个列的
值
例如:
INSERT INTO emp_dongzhixiao(id,name,salary)VALUES(2,'tom',2500)INSERT INTO emp_dongzhixiao(id,name,salary)VALUES(3,'JERRY',3500)
查询表数据
SELECT * FROM emp_dongzhixiao
事务控制:
COMMIT
用于提交事务。ROLLBACK
用于回滚事务。那么本次事务中所有的增删改操作
全部失效。
日期格式化函数
str_to_date(‘2012-05-01 23:59:59’,’%Y-%m-%d %T’)
上函数转换为DATE数据类型—-用于表示 年月日,如果实际应用值需要保存 年月日 就可以使用 DATE。
- %Y:代表4位的年份
%y:代表2为的年份
%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)
%d:代表月份中的天数,格式为(00……31)
%e:代表月份中的天数, 格式为(0……31)
%H:代表小时,格式为(00……23)
- %k:代表 小时,格式为(0……23)
- %h: 代表小时,格式为(01……12)
- %I: 代表小时,格式为(01……12)
%l :代表小时,格式为(1……12)
%i: 代表分钟, 格式为(00……59)
%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表 时间,格式为24 小时(hh:mm:ss)
%S:代表 秒,格式为(00……59)
- %s:代表 秒,格式为(00……59)
例如:
INSERT INTO emp_dongzhixiao (id,name,birth)VALUES (1,'jack',str_to_date('1989-11-08','%Y-%m-%d'))
修改表中的数据
UPDATE table_name
SET column1 = value1[, column2 = value2,….]
[WHEN condition];
例如:
UPDATE emp_dongzhixiaoSET job='MANAGER' WHERE salary=8500;
注意:where句的作用—-可以控制只选择指定行。
where包含的条件表达式可以使用>、>=、<、<=、=、<>等基本运算符
SQL中的比较可以比较数值、字符串、日期的大小。
其中判断两个是是否相等是==单等号==,判断不相等是<>,赋值运算符是冒号等号(:=)注意:通常情况下,更改表时,要添加WHERE
来指定过滤条件,若不指定WHERE则是全表修改
通常不会这样做。
从表中删除数据
DELETE FROM table_name
[WHEN condition];
例如:
DELETE FROM emp_dongzhixiaoWHERE name='tom'
删除数据时更要注意,添加WHERE.否则是全表
删除。
注意区别TRUNCATE的删除效果
属于DDL的删除语句,直接删,不能回退了!
例如:TRUNCATE TABLE emp_dongzhixiao;
- 数据库学习(一)----基本原理
- Hibernate学习总结(一) --基本原理
- Hibernate基本原理(一)
- Hibernate基本原理(一)
- Hibernate基本原理(一)
- Hibernate基本原理(一)
- Hibernate基本原理(一)
- spring基础学习一(spring工作的基本原理)
- 字符编码与字库开发基本原理学习(一)
- Lucene学习(一):全文检索的基本原理
- InSAR学习(一) 基本原理 Basics of Interferometric SAR (InSAR)
- Docker学习笔记(一)基本原理及概念
- IPSEC VPN基本原理(一)
- 对焦的基本原理(一)
- 网络爬虫基本原理(一)
- Hibernate基本原理篇(一)
- 跳表 SkipList(一)基本原理
- lucence的基本原理(一)
- RestTemplate的简单实用
- Oracle游标全解
- Spring Boot 使用JSP时,修改JSP不生效,需要重启的现象
- delphi chrome cef3 控件学习笔记 (三)
- JavaWeb学习笔记——Servlet编程
- 数据库学习(一)----基本原理
- 手机H5页面滑动事件
- IOS旗下基于FFmpeg开发的开源流媒体播放器汇总推荐
- java中连接数据库
- 【备忘】传智播客最新大数据第3期实战培训完整版视频教程
- delphi chrome cef3 控件学习笔记 (四)
- C语言free报错
- myBatis使用collection
- 物联网平台机智云Android开源框架入门之旅(三)分析设备详情界面的中如何发送各种指令到云端。