☺☺☺
题号 | 知识点 |
---|---|
1 | sqlite中字符串拼接符号为|| ;在MySQL中拼接用contact函数 ,语法格式为:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字符串,定长与不定长均可以 |
2 | 创建数据表:CREATE TABLE <表名> (列名和具体定义) |
3 | 向数据表中插入数据:INSERT INTO <表名> (列名) VALUES (数据1),(数据2) |
4 | INSERT IGNORE 插入数据,若数据存在则忽略 |
5 | 创建表并导入已有表的数据:将创建表中的VALUES替换为子查询SELECT |
6 | 创建索引CREATE INDEX ; 创建唯一索引CREATE UNIQUE INDEX |
将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
(注:该数据库系统是sqllite,字符串拼接为 || 符号,不支持concat函数)
CREATE TABLEemployees
(emp_no
int(11) NOT NULL,
birth_date
date NOT NULL,
first_name
varchar(14) NOT NULL,
last_name
varchar(16) NOT NULL,
gender
char(1) NOT NULL,
hire_date
date NOT NULL,
PRIMARY KEY (emp_no
));
||
,在MySQL中拼接用contact函数
。#语法格式:
CONCAT(char c1, char c2, ..., char cn) ,其中char代表字符串,定长与不定长均可以
SELECT (e.last_name ||' '|| e.first_name) AS Name
FROM employees e
创建一个actor表,包含如下列信息(注:sqlite获取系统默认时间是datetime(‘now’,‘localtime’))
CREATE TABLE <表名>
(
<列名> <数据类型> [DEFAULT] [<列约束1> <列约束2> ...]
)
smallint
:表示精确数值型,-2^15~2^15-1
varcahr
:表示字符型,是非定长的Unicode字符timestamp
:表示特殊的数据类型。提供数据库范围内的唯一值。所定义的列更新或添加数据行时,此列的值会被自动更新。每个数据库表中只能有一个timestamp列。NULL/NOT NULL
:表示该列值可以为空或不能为空PRIMARY KEY
约束(主键约束):用于定义基本表的主键。约束方式有两种:PRIMARY KEY
加到该列的定义里;PRIMARY KEY(<主键名>)
(DATETIME('now', 'localtime'))
注意前后都要加上括号;now()
,具体如下:now()函数以`yyyy-mm-dd hh:mm:ss返回当前的日期时间,可以直接存到datetime字段中。
curdate()以’yyyy-mm-dd’的格式返回今天的日期,可以直接存到date字段中。
curtime()以’hh:mm:ss’的格式返回当前的时间,可以直接存到time字段中。
CREATE TABLE actor
(
actor_id SMALLINT(5) NOT NULL,
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL,
last_update TIMESTAMP NOT NULL DEFAULT (DATETIME('now', 'localtime')),
PRIMARY KEY(actor_id)
)
对于表actor批量插入如下数据(不能有2条insert语句哦!)
CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))
INSERT INTO <表名>
VALUES (值)
INSERT INTO <表名> (列名)
VALUES (值)
INSERT INTO <表名>
VALUES (值1行),(值2行)...
方法2:
INSERT INTO <表名>
SELECT 1, 数据
UNION SELECT 2, 数据
insert into
:插入数据,如果重复,则报错insert repalce
:插入替换数据,如果存在则替换数据insert ignore
:如果存在数据,则忽略。INSERT INTO actor
VALUES
(1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'),
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33')
或者
INSERT INTO actor
SELECT 1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'
UNION SELECT 2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33'
对于表actor批量插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)
CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))
IGNORE
这个方法,而且这个方法在sqlite3和mysql下是有区别的INSERT OR IGNORE INTO actor
VALUES (3, 'ED', 'CHASE', '2006-02-15 12:34:33')
mysql下去掉OR
:
INSERT IGNORE INTO actor
values(3,'ED','CHASE','2006-02-15 12:34:33');
对于如下表actor,其对应的数据为:
请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.
actor_name表结构如下:
CREATE TABLE actor_name AS
SELECT first_name, last_name
FROM actor
MySQL下:AS可有可无
CREATE TABLE actor_name
SELECT first_name, last_name
FROM actor
针对如下表actor结构创建索引:
(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作)
CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))
对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
(请先创建唯一索引,再创建普通索引)
CREATE INDEX
语句实现,其中一个是唯一索引需要用到CREATE UNIQUE INDEX
,另一个是普通索引直接CREATE INDEX
即可,注意这两条语句中间用分号;
隔开。索引: 数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引是一种可以加快检索的数据库结构,它包含从表或视图的一列或多列生成的键。通过创建设计良好的索引,可以显著提高数据库查询和应用程序的性能。索引一旦创建,将由DBMS自动管理和维护。当插入、删除或修改记录时,DBMS会自动更新表中的索引。唯一索引:唯一索引能够保证索引键中国不包含重复的值,从而使表中的一行在某种方式上具有唯一性。
注意: 如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。
索引的分类:
唯一索引(UNIQUE): 不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
主键索引 : 主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引,即创建PRIMARY KEY或UNIQUE约束时会为指定列自动创建唯一索引。)
聚集索引(CLUSTERED): 表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
非聚集索引(NONCLUSTERED): 表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
使用SQL语句创建索引:CREATE INDEX
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
例如:为表SC在SNo和CNo上建立唯一索引SCI。
CREATE UNIQUE INDEX SCI ON SC(SNo, CNo)
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);
CREATE INDEX idx_lastname ON actor(last_name);