mysql 最长字符串_那些年的Mysql
首先介紹幾個數(shù)據(jù)庫吧
Access?? ?//微軟
????????是一種桌面數(shù)據(jù)庫,只適合數(shù)據(jù)量少的應(yīng)用,在處理少量數(shù)據(jù)和單機訪問的數(shù)據(jù)庫時是很好的,效率也很高。但是它同時訪問客戶端不能多于4個。Access數(shù)據(jù)庫有一定的極限,如果數(shù)據(jù)達(dá)到100M左右,很容易造成服務(wù)器假死,或者消耗掉服務(wù)器的內(nèi)存導(dǎo)致服務(wù)器崩潰。多用于VB? ASP?
SQL Server? //微軟
是基于服務(wù)器端的中型的數(shù)據(jù)庫,可以適合大容量數(shù)據(jù)的應(yīng)用,在功能上管理上也要比Microsoft Access要強得多。在處理海量數(shù)據(jù)的效率,后臺開發(fā)的靈活性,可擴(kuò)展性等方面強大。因為現(xiàn)在數(shù)據(jù)庫都使用標(biāo)準(zhǔn)的SQL語言對數(shù)據(jù)庫進(jìn)行管理,所以如果是標(biāo)準(zhǔn)SQL?? ?語言,兩者基本上都可以通用的。Microsoft SQL Server還有更多的擴(kuò)展,可以用存儲過程,數(shù)據(jù)庫大小無極限限制,重量級的(遷移性很差)不跨平臺
MySql
是個開源的數(shù)據(jù)庫,可運行在多種平臺,如windows,unix/linux; 他的體積很小,是專為WEB 數(shù)據(jù)庫設(shè)計的,特點是響應(yīng)速度特別快,主要面向中小企業(yè),對于海量數(shù)據(jù)庫很強大,可以作為大型數(shù)據(jù)庫系統(tǒng)使用,最主要是其標(biāo)準(zhǔn)版是免費的。
Oracle
各方面都比較成熟,但對硬件要求高,用于數(shù)據(jù)完整性、安全性要求較高的場合,能在所有主流平臺上運行,完全支持所有的工業(yè)標(biāo)準(zhǔn),采用完全開放策略。可以使客戶選擇最適合的解決方案,對開發(fā)商全力支持。平行服務(wù)器通過使一組結(jié)點共享同一簇中的工作來擴(kuò)展服務(wù)器的能力,提供高可用性和高伸縮性的簇的解決方案,獲得最高認(rèn)證級別的iso標(biāo)準(zhǔn)認(rèn)證,多層次網(wǎng)絡(luò)計算,支持多種工業(yè)標(biāo)準(zhǔn),可以用odbc,jdbc,oci等網(wǎng)絡(luò)客戶連接,較復(fù)雜,同時提供gui和命令行,在windows和unix下操作相同,如果windows不能滿足需要,用戶可以把數(shù)據(jù)庫移到unix中。其操作和設(shè)置比較復(fù)雜,適用于有一定操作經(jīng)驗的用戶
DB2 //IBM
說簡單點:DB2就是IBM開發(fā)的一種大型關(guān)系型數(shù)據(jù)庫平臺。它支持多用戶或應(yīng)用程序在同一條SQL 語句中查詢不同database中的數(shù)據(jù)。
MangoDB
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品, 是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。MangoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。
今天主要介紹MySQL
MySQL數(shù)據(jù)類型:
-----數(shù)值型
??????????? SMALLINT: 2個字節(jié)
?? ??? ??? ?INT: 4個字節(jié)?? ?
?? ??? ??? ?INTEGER:INT的同義詞
?? ??? ??? ?BIGINT : 8個字節(jié)
?? ??? ??? ?FLOAT : 4個字節(jié)? ?
?? ??? ??? ?DOUBLE : 8個字節(jié)
-----字符串類型
?? ??? ??? ?CHAR:固定長度字符串? sex char(1) //1個字符
?? ??? ??? ?VARCHAR:可變長度字符串 name varchar(20) //20指的是字符雖然VARCHAR使用起來較為靈活,但是從整個系統(tǒng)的性能角度來說,CHAR數(shù)據(jù)類型的處理速度更快,有時甚至可以超過VARCHAR處理速度的50%
-----日期/時間類型
?? ??? ??? ? DATE: YYYY-MM-DD
?? ??? ????? DATETIME:YYYY-MM-DD? HH:MM:SS
?? ??? ????? TIMESTAMP:YYYY-MM-DD HH:MM:SS ?
?? ??? ????? TIME:HH:MM:SS
?? ??? ????? YEAR:YYYY
?? ??? ??? ?TIMESTAMP:時間戳?? ? 當(dāng)update修改時,會自動更新
-----其他
?? ??? ?? BLOB和TEXT
?? ??? ?? 用于存儲大的數(shù)據(jù)
?????????? ?1. BLOB 類型區(qū)分大小寫
?? ??? ??? ??? ?TEXT 不區(qū)分大小寫
?? ??? ??? ? 2. BLOB被視為二進(jìn)制字符串(例如 圖片等);
?? ??? ??? ??? ?Text被視為非二進(jìn)制字符串
?? ??? ??? ? 3. BLOB 可以儲存圖片,TEXT不行,TEXT只能儲存純文本文件。
4個TEXT類型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT對應(yīng)于4個BLOB類型,并且有同樣的最大長度和存儲需求。
4個BLOB類型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB僅僅在他們能保存值的最大長度方面有所不同。
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M?
LongBlob 最大 4G ????
數(shù)據(jù)庫比較簡單,直接上例子了:
--創(chuàng)建表 create table student( id int(2) primary key auto_increment,//主鍵默認(rèn)不為空not null auto_increment 自增 stuName varchar(20) not null, //可以加約束條件 school varchar(30) comment '這是學(xué)校字段', score float(5,2), //最長是5位,但是小數(shù)點后必須2位 birthday date, sex char(1) default '男', )comment='這是一個學(xué)生表'主鍵也可以單獨設(shè)置 primary key(id),主鍵也可以是復(fù)合主鍵 primary key(id,stuName)對于自增主鍵,字段類型一定是數(shù)值類型,并且一定是從曾經(jīng)用過的最大的基礎(chǔ)上加一,就算是數(shù)據(jù)刪掉了,也會在最大上加一 ,但是這個值我們是可以手動修改的
介紹幾個日常用的多的吧:
(一)給表增加一列:
??alter?table?student?add?aa?int(3)(二)修改表中的列名:
alter table student change aa AAA int(3)(三)修改某個列的約束條件:
alter table student modify sex char(1) not null;(四)修改表明:
alter table student rename as t_student(五)刪除某一列:
alter table student drop AAA;(六)修改字段注釋,類型,大小:
alter table student modify school char(50) comment '修改之后的學(xué)校'(七)修改字段的默認(rèn)值:
alter table student alter sex set default ''(八)多條插入:列名可以省略,但值要和數(shù)據(jù)庫中的列名順序匹配
insert into t_student(stuName) values ('a'),('b'),('c')(九)備份:
INSERT into student_backup(stuName,score) select stuName,score from t_student介紹一下事務(wù)
事務(wù):指的是要做的事情,在計算機術(shù)語中指的是一個執(zhí)行單元事務(wù)具有幾個特點:1.原子性,2.一致性,3.隔離性,4.持久性。
START TRANSACTION; insert into student_backup(stuName) values('111'); update t_student set score=100 where id=1; COMMIT;?注意:執(zhí)行的時候一定要加分號。
常用快捷鍵:記不下來沒關(guān)系,純屬裝B用的
????????????????1.ctrl+q?????????? 打開查詢窗口
?? ??? ??? ??? ?2.ctrl+/??????????? 注釋sql語句
?? ??? ??? ??? ?3.ctrl+shift +/? 解除注釋
?? ??? ??? ??? ?4.ctrl+r?????????? 運行查詢窗口的sql語句
?? ??? ??? ??? ?5.ctrl+shift+r?? 只運行選中的sql語句
?? ??? ??? ??? ?6.F6?????????????? 打開一個MySQL命令行窗口
?? ??? ??? ??? ?7.ctrl+l??????????? 刪除一行
?? ??? ??? ??? ?8.ctrl+w????????? 關(guān)閉一個查詢窗口
關(guān)于關(guān)系和非關(guān)系數(shù)據(jù)庫大概的優(yōu)缺點
(一)非關(guān)系型數(shù)據(jù)庫的優(yōu)勢:
????1. 性能NOSQL是基于鍵值對的,可以想象成表中的主鍵和值的對應(yīng)關(guān)系,? 而且不需要經(jīng)過SQL層的解析,所以性能非常高。?? ??? ??? ????
??? 2. 可擴(kuò)展性高,因為數(shù)據(jù)基于鍵值對,數(shù)據(jù)之間沒有耦合性。
? (二) 關(guān)系型數(shù)據(jù)庫的優(yōu)勢:
?1. 復(fù)雜查詢可以用SQL語句方便的在一個表以及多個表之間做非常復(fù)雜的數(shù)據(jù)查詢。
?2. 事務(wù)支持的比非關(guān)系型更好,可以實現(xiàn)對安全性能很高的數(shù)據(jù)的訪問。
來個例子:執(zhí)行提供的sql文件 employees.sql
#--1.查詢員工表所有數(shù)據(jù)
select * from employees#--2.打印公司里所有的manager_id
select manager_id from employees#--3.查詢80號部門的所有員工
select * from employees where department_id=80#--4.查詢50號部門每人增長1000元工資之后的人員姓名及工資(2個問題)
update employees set salary=salary+1000 where DEPARTMENT_ID=50;select SALARY,FIRST_NAME from employees where DEPARTMENT_ID=50;#--5.查詢80號部門工資大于7000的員工的全名與工資
select first_name,last_name,salary from employees where salary>7000 and department_id=80#--6.查詢80號部門工資大于8000并且提成高于0.3的員工姓名,工資以及提成
(拿到的工資-底薪)/拿到的工資#--7.查詢職位(job_id)為'AD_PRES'的員工的工資
select salary from employees where job_id like 'AD_PRES'#--8.查詢傭金(commission_pct)為0或為null的員工信息
select * from employees where commission_pct=0.1 or commission_pct is NULL#--9.查詢?nèi)肼毴掌谠?997-5-1到1997-12-31之間的所有員工信息
select * from employees where hire_date BETWEEN '1997-5-1' and '1997-12-31'#--10.修改EMAIL為IMIKKILI 的工資增加為1000元
update employees set salary=salary+1000 where EMAIL like 'IMIKKILI'#--11.修改部門編號為80的并且工資大于5000的員工手機號為123456789
update employees set phone_number=123456789 where DEPARTMENT_ID=80 and SALARY>5000#--12.添加一條自己名字的簡稱的信息到部門為50的部門下
insert?into?employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_id,department_id)?values(2000,'Cao','anin','GGJIJ','13206529854','1998-2-10','yh-uu',5032,NULL,108,50)#--13.刪除1998到1999年并且工資小于4000的員工
delete from employees where (hire_date BETWEEN '1998-0-0' and '2000-0-0') and salary<4000#--14.查詢工作為SA_REP并且工資大于7000的員工,顯示LAST_NAME為'名字',EMAIL為'郵箱',SALARY為'工資'
select last_name as '名字',email as '郵箱',salary as '工資' from employees where salary>7000總結(jié)
以上是生活随笔為你收集整理的mysql 最长字符串_那些年的Mysql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python趣味编程入门 迈克 桑德斯_
- 下一篇: matlab 图像分割 提取人像_数字图