1. 程式人生 > 實用技巧 >【mysql相關】

【mysql相關】

01.07複習mysql**

mysql -uroot -p123456  --連線資料庫
update mysql.user set authentication_string=password('123456')where user='root' and Host = 'localhost'; --修改使用者密碼 
flush privileges;   --重新整理許可權
--------------
--兩個單橫線是註釋
--注意語句以分號;結尾
show databases; --檢視所有的資料庫

mysql>use school --切換資料庫, 使用:use 資料庫名
Database changed 

show tables;  --檢視資料庫中的表
describe student;  --顯示資料庫中student表的資訊

creat database westos; --建立一個數據庫westos
exit;  --退出連線

操作資料庫:

CREATE DATABASE IF NOT EXISTS www  --建立資料庫,加if not exists防止重複
--資料庫中自動變成大寫
DROP DATABASE IF EXISTS www	--刪除資料庫www
USE `user`   
SELECT `USER` FROM student  --查詢student表中USER欄位的資訊
SHOW DATABASE

資料庫列型別:

data  YYYY-MM-DD,日期格式
time  HH: mm: ss 時間格式
datetime YYYY-MM-DD HH:mm :ss最常用的時間格式
timestamp  時間戳,19701.1到現在的毫秒數
---

資料庫欄位屬性:

Unsigned:是無符號整數,該列不能為負數
zerofill:不足位數0填充,比如int(3) 輸入5,結果為005
自增:通常是用於設計整數型別的主鍵,自增;
非空 NULL not null ,這個時候不賦值會報錯
NULL,如果不填,就是null

建立資料庫表:

CREATE TABLE IF NOT EXISTS `student`(
--表的名稱(student)和欄位儘量用` `括起來,防止因為是關鍵字而造成報錯
--字串一般使用單引號
--AUTO_INCREMENT是自增
	`id`  INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
	`name` VARCHAR(30) NOT NULL DEFAULT  '匿名' COMMENT '姓名',
	--default是設定預設值
	`pwd` VARCHAR(20)NOT NULL DEFAULT '123456' COMMENT '密碼',
	`sex` VARCHAR(2)NOT NULL DEFAULT '男' COMMENT '性別',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '電子郵箱',
	--新增主鍵PRIMARY KEY
	PRIMARY KEY(`id`)
	
)ENGINE INNODB DEFAULT CHARSET = utf8

修改與刪除表/表中欄位:

ALTER TABLE teacher RENAME AS teacher1
--修改表名
ALTER TABLE teacher1 ADD age INT(11)
--增加表的欄位age
ALTER TABLE teacher1 MODIFY age VARCHAR(11)
ALTER TABLE teacher1 CHANGE age age1 INT(1)
--change和modify區別:modify用於修改約束,change用來給欄位重新命名

ALTER TABLE teacher1 DROP age1 --刪除表的欄位
DROP TABLE IF EXISTS teacher1  --刪除表
--sql關鍵字大小寫不敏感

外來鍵:

---方式一建立表時新增
KEY `FK_gradeid`--定義鍵
--FK_gradeid是約束名
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) --給外來鍵新增約束,CONSTRAINT為約束,REFENENCES為引用
當存被其他表引用(有外來鍵關係)的時候此表是無法直接刪除表的,需要先把那個表刪除
--方式二建立後加外來鍵
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FORERIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
--就是說:新增 約束名 外來鍵()引用 那個表 表中的(哪個欄位)

其實,資料庫儲存資料即可,行為資料,列為欄位;

後續用程式即可實現使用多張表的資料

DML(增刪改):資料操作語言

insert update delete

select(不是

insert,update

INSERT INTO `表名`(`欄位1`,`欄位2`)values('值1'),('值2')(...)
UPDATE `表名` SET `name` = 'xxx' WHERE id = 1 --一定要加附加條件
DELETE FROM `表名` WHERE id = 1;
TRUNCATE `student` --清空student整個表

select (DQL,資料查詢語言)

SELECT * FROM student --查詢全部學生
SELECT * FROM score  
SELECT `列名1`, `列名2` FROM student
SELECT `StudentNo` AS 學號, `StudentName` AS 學生姓名 FROM student--這樣用別名就很直觀
--拼接字串CONCAT(a,b)
SELECT CONCAT('姓名:',StudentName) AS 新名字 FROM student