/*
創(chuàng)建數(shù)據(jù)庫
create database 數(shù)據(jù)庫名;
*/
CREATE DATABASE mybase;
/*
使用數(shù)據(jù)庫
use 數(shù)據(jù)庫名
*/
USE mybase;
/*
創(chuàng)建數(shù)據(jù)表的格式
create table 表名(
列名1 數(shù)據(jù)類型 約束,
列名2 數(shù)據(jù)類型 約束,
列名3 數(shù)據(jù)類型 約束
);
創(chuàng)建用戶表,用戶編號,姓名,用戶的地址
將編號列,設(shè)置為主鍵約束,保證列的數(shù)據(jù)唯一性,非空性
primary key AUTO_INCREMENT
讓主鍵列數(shù)據(jù),實現(xiàn)自動增長
*/
CREATE TABLE users (
uid INT PRIMARY KEY AUTO_INCREMENT ,
uname VARCHAR(20),
uaddress VARCHAR(200)
);
/*show tables 顯示所有數(shù)據(jù)表
desc users 查看表中結(jié)構(gòu)
drop table users 刪除數(shù)據(jù)表
*/這三個用的不多
CREATE TABLE users (
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20),
uaddress VARCHAR(200)
);
/*
添加列,添加字段
alter table 表名 add 列名 數(shù)據(jù)類型 約束
*/
ALTER TABLE users ADD tel INT ;
/*
修改列, 在原有的列上修改
修改列名,數(shù)據(jù)類型約束
alter table 表名 modify 列名 數(shù)據(jù)類型 約束
*/
ALTER TABLE users MODIFY tel VARCHAR(50);
/*
修改列名
alter table 表名 change 舊列名 新列名 數(shù)據(jù)類型 約束
*/
ALTER TABLE users CHANGE tel newtel DOUBLE;
/*
刪除列
alter table 表名 drop 列名
*/
ALTER TABLE users DROP newtel;
/*
修改表名
rename table 表名 to 新名
*/
RENAME TABLE users TO newusers
CREATE TABLE product(
-- 主鍵列,自動增長
id INT PRIMARY KEY AUTO_INCREMENT,
-- 商品名字,可變字符,非空
pname VARCHAR(100) NOT NULL,
-- 商品的價格,double
price DOUBLE
);
/*
向數(shù)據(jù)表中添加數(shù)據(jù) insert
格式:
insert into 表名(列名1,列名2,列名3) values (值1,值2,值3)
注意:
列名,表名問題
對應(yīng)問題,
個數(shù),數(shù)據(jù)類型
*/
INSERT INTO product (id,pname,price) VALUES (1,'筆記本',5555.99);
INSERT INTO product (id,pname,price) VALUES (2,'智能手機',9999);
/*
添加數(shù)據(jù)格式,不考慮主鍵
格式:
insert into 表名 (列名) values (值)
*/
INSERT INTO product (pname,price) VALUES('洗衣機',800);
/*
添加數(shù)據(jù)格式,所有值全給出
格式:
insert into 表名 values (全列值)
*/
INSERT INTO product VALUES (4,'微波爐',300.25);
/*
添加數(shù)據(jù)格式,批量寫入
格式:
insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
*/
INSERT INTO product (pname,price) VALUES
('智能機器人',25999.22),
('彩色電視',1250.36),
('沙發(fā)',5899.02)
-- insert into product (pname,price) values ('熱水器',485.02)
-- INSERT INTO product (id,pname,price) VALUES (7,'空調(diào)',485.02)
/*
對數(shù)據(jù)進(jìn)行更新操作
數(shù)據(jù)在原有的基礎(chǔ)上修改
格式:
update 表名 set 列1=值1,列2=值2 where 條件
where 條件: 數(shù)據(jù)中的唯一性
*/
-- 修改智能手機,價格上調(diào)到15999
UPDATE product SET price = 15999 WHERE id=2
-- 修改彩色電視,名字改為黑白電視機,價格,100
UPDATE product SET pname='黑白電視機', price=100 WHERE id = 6
/*
修改條件的寫法
id=6
id<>6 不等于
id<=6
與或非 && || ! 這是java里的
&& and SQL里的
|| or
! not
id in (1,3,4,5,6) 包含
*/
-- 將筆記本的價格,和空調(diào)的價格,全部修改為2000
UPDATE product SET price = 2000 WHERE id = 1 OR id = 7;
/*
刪除表中的數(shù)據(jù)
格式:
delete from 表名 where 條件
drop table 表名 刪除整個數(shù)據(jù)表
*/
-- 刪除熱水器
DELETE FROM product WHERE id=8;
面試題:
刪除表中所有記錄使用delete from 表名; 還是用truncate table 表名;
刪除方式:delete 一條一條刪除,不清空auto_increment記錄數(shù)盹廷。
truncate 直接將表刪除碎罚,重新建表,auto_increment將置為零捎泻,從新開始哟绊。
聚合函數(shù):
1北救,count:統(tǒng)計指定列布為NULL的記錄行數(shù)湿右;
2诅妹,sum:計算指定列的數(shù)值和,如果指定列類型不是數(shù)值類型毅人,那么計算結(jié)果為0吭狡;
3,max:計算指定列的最大值丈莺,如果指定列是字符串類型划煮,那么使用字符串排序運算;
4场刑,min:計算指定列的最小值,如果指定列是字符串類型蚪战,那么使用字符串排序運算
5牵现,avg:計算指定列的平均值,如果指定列類型不是數(shù)值類型邀桑,那么計算結(jié)果為0瞎疼;
反引號(“`”)
保留字不能用于表名,比如desc壁畸,此時需要加入反引號來區(qū)別贼急,但使用表名時可忽略反引號茅茂。
create table desc報錯
create table desc
成功
create table test
成功
drop table test成功
保留字不能用于字段名,比如desc太抓,此時也需要加入反引號空闲,并且insert等使用時也要加上反引號。
create table test
(desc
varchar(255))成功
insert into test(desc) values('fxf')失敗
insert into test(desc
) values('fxf')成功
使用雙字符:
插入時 庫中
'aa''b''cc' aa'b'cc
"aa"b""cc" aa"b"cc
使用轉(zhuǎn)義字符():
插入時 庫中
'aa'b'cc' aa'b'cc
"aa"b"cc" aa"b"cc
在單引號包裹的字符串中使用雙引號走敌、在雙引號包裹的字符串中使用單引號 不需要使用雙引號或轉(zhuǎn)義字符碴倾。
插入時 庫中
"aa'b'cc" aa'b'cc
'aa"b"cc' aa"b"cc