mysql 最长字符串_那些年的Mysql
首先介紹幾個數據庫吧
Access?? ?//微軟
????????是一種桌面數據庫,只適合數據量少的應用,在處理少量數據和單機訪問的數據庫時是很好的,效率也很高。但是它同時訪問客戶端不能多于4個。Access數據庫有一定的極限,如果數據達到100M左右,很容易造成服務器假死,或者消耗掉服務器的內存導致服務器崩潰。多用于VB? ASP?
SQL Server? //微軟
是基于服務器端的中型的數據庫,可以適合大容量數據的應用,在功能上管理上也要比Microsoft Access要強得多。在處理海量數據的效率,后臺開發的靈活性,可擴展性等方面強大。因為現在數據庫都使用標準的SQL語言對數據庫進行管理,所以如果是標準SQL?? ?語言,兩者基本上都可以通用的。Microsoft SQL Server還有更多的擴展,可以用存儲過程,數據庫大小無極限限制,重量級的(遷移性很差)不跨平臺
MySql
是個開源的數據庫,可運行在多種平臺,如windows,unix/linux; 他的體積很小,是專為WEB 數據庫設計的,特點是響應速度特別快,主要面向中小企業,對于海量數據庫很強大,可以作為大型數據庫系統使用,最主要是其標準版是免費的。
Oracle
各方面都比較成熟,但對硬件要求高,用于數據完整性、安全性要求較高的場合,能在所有主流平臺上運行,完全支持所有的工業標準,采用完全開放策略??梢允箍蛻暨x擇最適合的解決方案,對開發商全力支持。平行服務器通過使一組結點共享同一簇中的工作來擴展服務器的能力,提供高可用性和高伸縮性的簇的解決方案,獲得最高認證級別的iso標準認證,多層次網絡計算,支持多種工業標準,可以用odbc,jdbc,oci等網絡客戶連接,較復雜,同時提供gui和命令行,在windows和unix下操作相同,如果windows不能滿足需要,用戶可以把數據庫移到unix中。其操作和設置比較復雜,適用于有一定操作經驗的用戶
DB2 //IBM
說簡單點:DB2就是IBM開發的一種大型關系型數據庫平臺。它支持多用戶或應用程序在同一條SQL 語句中查詢不同database中的數據。
MangoDB
MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品, 是非關系數據庫當中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。MangoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
今天主要介紹MySQL
MySQL數據類型:
-----數值型
??????????? SMALLINT: 2個字節
?? ??? ??? ?INT: 4個字節?? ?
?? ??? ??? ?INTEGER:INT的同義詞
?? ??? ??? ?BIGINT : 8個字節
?? ??? ??? ?FLOAT : 4個字節? ?
?? ??? ??? ?DOUBLE : 8個字節
-----字符串類型
?? ??? ??? ?CHAR:固定長度字符串? sex char(1) //1個字符
?? ??? ??? ?VARCHAR:可變長度字符串 name varchar(20) //20指的是字符雖然VARCHAR使用起來較為靈活,但是從整個系統的性能角度來說,CHAR數據類型的處理速度更快,有時甚至可以超過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:時間戳?? ? 當update修改時,會自動更新
-----其他
?? ??? ?? BLOB和TEXT
?? ??? ?? 用于存儲大的數據
?????????? ?1. BLOB 類型區分大小寫
?? ??? ??? ??? ?TEXT 不區分大小寫
?? ??? ??? ? 2. BLOB被視為二進制字符串(例如 圖片等);
?? ??? ??? ??? ?Text被視為非二進制字符串
?? ??? ??? ? 3. BLOB 可以儲存圖片,TEXT不行,TEXT只能儲存純文本文件。
4個TEXT類型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT對應于4個BLOB類型,并且有同樣的最大長度和存儲需求。
4個BLOB類型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB僅僅在他們能保存值的最大長度方面有所不同。
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M?
LongBlob 最大 4G ????
數據庫比較簡單,直接上例子了:
--創建表 create table student( id int(2) primary key auto_increment,//主鍵默認不為空not null auto_increment 自增 stuName varchar(20) not null, //可以加約束條件 school varchar(30) comment '這是學校字段', score float(5,2), //最長是5位,但是小數點后必須2位 birthday date, sex char(1) default '男', )comment='這是一個學生表'主鍵也可以單獨設置 primary key(id),主鍵也可以是復合主鍵 primary key(id,stuName)對于自增主鍵,字段類型一定是數值類型,并且一定是從曾經用過的最大的基礎上加一,就算是數據刪掉了,也會在最大上加一 ,但是這個值我們是可以手動修改的
介紹幾個日常用的多的吧:
(一)給表增加一列:
??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 '修改之后的學校'(七)修改字段的默認值:
alter table student alter sex set default ''(八)多條插入:列名可以省略,但值要和數據庫中的列名順序匹配
insert into t_student(stuName) values ('a'),('b'),('c')(九)備份:
INSERT into student_backup(stuName,score) select stuName,score from t_student介紹一下事務
事務:指的是要做的事情,在計算機術語中指的是一個執行單元事務具有幾個特點:1.原子性,2.一致性,3.隔離性,4.持久性。
START TRANSACTION; insert into student_backup(stuName) values('111'); update t_student set score=100 where id=1; COMMIT;?注意:執行的時候一定要加分號。
常用快捷鍵:記不下來沒關系,純屬裝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????????? 關閉一個查詢窗口
關于關系和非關系數據庫大概的優缺點
(一)非關系型數據庫的優勢:
????1. 性能NOSQL是基于鍵值對的,可以想象成表中的主鍵和值的對應關系,? 而且不需要經過SQL層的解析,所以性能非常高。?? ??? ??? ????
??? 2. 可擴展性高,因為數據基于鍵值對,數據之間沒有耦合性。
? (二) 關系型數據庫的優勢:
?1. 復雜查詢可以用SQL語句方便的在一個表以及多個表之間做非常復雜的數據查詢。
?2. 事務支持的比非關系型更好,可以實現對安全性能很高的數據的訪問。
來個例子:執行提供的sql文件 employees.sql
#--1.查詢員工表所有數據
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.查詢入職日期在1997-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總結
以上是生活随笔為你收集整理的mysql 最长字符串_那些年的Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python趣味编程入门 迈克 桑德斯_
- 下一篇: matlab 图像分割 提取人像_数字图