SQL-Structured Query Language結構化查詢語言。
MySql的安裝-解壓版:
1、解壓。
2、設置MySql的數據庫目錄,修改配置文件my.ini
[mysqld]
basedir=E:\\myserver\\mysql-5.0.37-win32 (必須)
datadir=E:\\myserver\\mysql-5.0.37-win32\\data (必須)
default-character-set=gbk -(可選,建議不設置)
2、啓動測試
命令行:/> mysqld –console
3、登錄MySql
命令行:/> mysql -u root –p (注意-u應該與root緊挨着)
4、增加用戶可以選程訪問,mysql.user表:
create user root identified by ‘1234’; --創建用戶
Grant all on *.* to ‘root’@’%’ with grant option; 授權
5、重新啓動服務器,測試是否可以遠程登錄
6、安裝mysql服務
命令行:/> mysqld –install
7、卸載服務
命令行:/> mysqld -remove
基本操作:
mysql –uroot –p1234 //登錄
mysql>show databases; //顯示所有已經存在的數據庫
mysql>use test; //使用某個數據庫
mysql>show tables; //顯示當前數據庫中的所有表
mysql>help; //顯示
mysql>desc tableName; //顯示錶結構
導出數據庫中的所有表:在命令行模式下:
shell/> mysqldump –uroot –p1234 –-databases dbName > d:\a\a.sql
導入:導入時,必須要先手工建立一個新的數據庫:
mysql>use dbName;
Mysql>source d:\a\a.sql
或:
shell/>mysql –uroot –p1234 –D dbname < d:\a\a.sql (注意參數-D是大寫)
MySql的數據類型:
查詢Mysql的開發手冊,查詢data type可見所有的數據類型。
比較經常使用的數據類型爲:
int、varchar、char、numeric(double,float)、text
Char與varchar的區別:
Char是定長數據,如果char(10)但裏面只保存了1個字符,則它的長度仍然是10.-但Mysql對查詢的結果進行了處理 ,所以使用legth無法判斷它所佔用的長度。
Varchar(10)時,如果裏面只保存了1個字符,則它的長度爲1,所以,varchar被稱了可變長字符。
Char的取值範圍爲0-255
varchar的取值範圍爲0-65535.如果是UTF-8數據類型則可以保存0-21844字符。
Int和numeric:
Int類型不能保存小數位。
Numeric可以保存小數位。如numeric(4,2)則可以表示最大數據爲:99.99。注意4是總位數,2是小數位數。
創建和修改表:
創建表:
Create table stud(
id int,
name varhcar(30)
);
創建時同時指定不能爲空:
Create table tb(
name varchar(20) not null
)
修改表:
Alter table stud
add column sex char(1); /*添加一個新的字段 */
Alter table stud
drop column sex; /* 刪除sex字段*/
數據CURD:
字符類型的數據前後要添加’’單引號。
插入數據
沒有指定列時,要給出完整數據,且要對應順序:
Insert into stud values(1,’Tom’,’1’);
優化寫入,指定列:
Insert into stud(id,name) values(1,’jack’);
查詢數據:
Select * from stud; -- 通過*將所有列顯示出來
查詢指定的列:
Select id ,name from stud
另名:as
Select id as 編號,name as 姓名 from stud; //不建議使用中文
或是省去as關鍵字:
Select id 編號,name 姓名 from stud;
給表也取個別名:
Select s.id,s.name from stud as s;
修改數據:
Update stud set name=‘Jack’;
同時修改兩個值:
Update stud set name=‘Rose’,id=22 where id=1;
在原值上面進行累加操作:
Update product set price=price*1.1 -所有商品的價格上漲10%
刪除數據:
Delete from stud /*全部刪除*/
Delete from stud where id=1; /*刪除指定的行 */
也可以使用
TRUNCATE TABLE stud; //它與delete的區別是不記錄操作日誌,即無法恢復數據。
Where子句:
Select 字段 From 表名 where 條件 and 條件 or 條件
Update table tableName set .. Where 條件
Delete from tableName where ….
條件查詢:
where關鍵字。(Name=‘dd’ and age=33) or addr=‘BJ’
between X and Y關鍵字。 在什麼之間
in關鍵字和not in. In(‘….’,’aafad’,’afasdf’);
and和or關鍵字。
使用like實現模糊查詢。%
通過is null判斷是否爲null。(要區分空字符串與null的區別)
演示:
1.創建數據庫:
CREATE DATABASE IF NOT EXISTS abc CHARACTER SET utf8;
2.創建表
CREATE TABLE student(
sno VARCHAR(15) NOT NULL PRIMARY KEY,
sname VARCHAR(15) NOT NULL,
age INT,
address VARCHAR(30)
);
CREATE TABLE teacher(
tno AUTO_INCREMENT NOT NULL PRIMARY KEY,
tname VARCHAR(15) NOT NULL,
tsale NUMERIC(DOUBLE)
);
CREATE TABLE stud(
sno VARCHAR(15) NOT NULL PRIMARY KEY,
sname VARCHAR(15) NOT NULL,
age INT,
address VARCHAR(30)
);
3.修改表格:
ALTER TABLE stud DROP COLUMN sno;
ALTER TABLE stud ADD COLUMN sno INT PRIMARY KEY AUTO_INCREMENT;
4.插入數據
INSERT INTO stud VALUES('dragon1',21,'湖南邵陽1',1);
INSERT INTO stud(sname,age,address) VALUES('dragon2',21,'湖南邵陽2');
5.刪除數據
DELETE FROM stud WHERE sno>=5;
DELETE FROM stud WHERE sno>=5 && sno<=8;
6.更新數據
UPDATE stud SET sname="龍" WHERE sno=4;
7.查詢數據
SELECT * FROM student;
SELECT * FROM student WHERE sno>1002;
//使用as爲字段取一個別名,as也可以省略
SELECT sno AS 學號,sname 姓名,age 年齡,address 地址 FROM student;
//複雜查詢
SELECT * FROM student WHERE age>24;
SELECT * FROM student WHERE age>24 AND age<40;
SELECT * FROM student WHERE age BETWEEN 24 AND 40;[24,40]
SELECT * FROM student WHERE age<=24 OR age>40;
//選取age=21,23,25的student
SELECT * FROM student WHERE age=21 OR age=23 OR age=25;
SELECT * FROM student WHERE age IN(21,23,25);
//選取age!=21,23,25的student
SELECT * FROM student WHERE age NOT IN(21,23,25);
//選擇地址爲湖南開頭的student,讓他的age+1
SELECT * FROM student WHERE address LIKE'湖南%';
UPDATE student SET age=age+1 WHERE address LIKE'湖南%';
SELECT * FROM student WHERE sname LIKE 'd%' AND age<25;
//_表示前面一個字符的個數+1
SELECT * FROM student WHERE sname LIKE 'd_';
//名字中帶a的
SELECT * FROM student WHERE sname LIKE '%a%';
//模糊查詢LIKE '%'通配所有字符 '_'通配單字符
SELECT * FROM stud WHERE sname LIKE '張%'; //姓張的學生
SELECT * FROM stud WHERE sname LIKE '張_'; //姓張,名爲單字的學生
SELECT * FROM stud WHERE sname LIKE '張__'; //姓張,名爲雙字的學生
SELECT * FROM stud WHERE sname LIKE '%張%'; //姓名中含“張”字的學生
SELECT * FROM stud WHERE sname LIKE '%張%' AND age<24;
//要查詢爲null的要使用關鍵字 IS NULL
SELECT * FROM student WHERE age IS NULL;
//查詢字段爲空字符串的記錄
SELECT * FROM student WHERE sname='';
如果顯示內容時要讓表頭變成中文,用別名(AS可以省略)
SELECT * FROM stud;
SELECT sno,sname,age,saddress FROM stud;
SELECT sno AS 編號,sname AS 姓名,age,saddress FROM stud;
SELECT sno 編號,sname 姓名,age 年齡,saddress 地址 FROM stud; //省略AS
句型:
select 字段名 from 表名 where 條件1 and 條件2 or 條件3
update 表名 set 字段名1=值 [,字段名2=值] where 子句[in 子句] [between子句]
delete from 表名 where 子句